データを行ごとに 1 つのキーと値のペアの形式に変換できれば、ほとんどの作業は完了です。その結果を t
としましょう .このようなもので、残りの道が開けるかもしれません:
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
これは id
あなたの例に示すように、順番に割り当てられます。