Si vous êtes en mesure d'obtenir vos données dans le format d'une paire clé/valeur par ligne, alors une grande partie du travail est faite. Permettez-moi d'appeler ce résultat t
. Quelque chose comme ça pourrait vous permettre d'aller jusqu'au bout :
select max(case when LEFT(data, 4) = 'key1' then SUBSTRING(data, 6, len(data)) end) as key1,
MAX(case when LEFT(data, 4) = 'key2' then SUBSTRING(data, 6, len(data)) end) as key2,
MAX(case when LEFT(data, 4) = 'key2' then SUBSTRING(data, 6, len(data)) end) as key3
from t
group by (id - 1)/3
Cela suppose que le id
est attribué de manière séquentielle, comme indiqué dans votre exemple.