Как транспонировать вывод SQL на условной основе? - PullRequest
0 голосов
/ 05 июня 2019

Я пытаюсь написать запрос для транспонирования строк в столбцы. Прикрепленное изображение имеет образец таблицы, которую я хочу транспонировать, и ожидаемый результат.

Любой вклад приветствуется.

Sample table and expected output

1 Ответ

0 голосов
/ 06 июня 2019

Опция 1. Условная агрегация

select labid, subjectid,
max(case when timepoint='T0' then val1 end) T0_val1,
max(case when timepoint='T0' then val2 end) T0_val2,
max(case when timepoint='T1' then val1 end) T1_val1,
max(case when timepoint='T1' then val2 end) T1_val2
from input
group by labid, subjectid;

Опция 2. Отмена / разворот

select * from
(
select labid, subjectid, timepoint+'_'+col as timepoint_col, val
from
(select labid, subjectid, timepoint,  val1, val2
from input) as src
unpivot 
(
  val for col in (val1, val2) 
) as unpiv) as x
pivot
(
max(val)
 for timepoint_col in ([T0_val1],[T0_val2],[T1_val1],[T1_val2])
) as piv1
...