Wenn Sie Ihre Daten in das Format mit einem Schlüssel/Wert-Paar pro Zeile bringen können, ist ein Großteil der Arbeit erledigt. Lassen Sie mich dieses Ergebnis t
nennen . So etwas wie das könnte Ihnen den Rest des Weges bringen:
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
Dies setzt voraus, dass die id
wird sequentiell zugewiesen, wie in Ihrem Beispiel gezeigt.