Als u uw gegevens in het ene sleutel/waarde-paar per rij-indeling kunt krijgen, dan is veel van het werk gedaan. Laat me dat resultaat t
. noemen . Zoiets kan je misschien de rest van de weg helpen:
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
Dit veronderstelt dat de id
wordt opeenvolgend toegewezen, zoals in uw voorbeeld.