Ако успеете да поставите данните си във формат с една двойка ключ/стойност на ред, значи голяма част от работата е свършена. Нека нарека този резултат 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
се присвоява последователно, както е показано във вашия пример.