SQL - Повернуть строки в столбцы и взять декартово произведение - PullRequest
0 голосов
/ 08 января 2019

Я пытаюсь сделать следующее, используя только SQL-запросы. Я не совсем уверен, как, но думаю, что я должен использовать Pivot и, возможно, перекрестное соединение?

Преобразуйте первую таблицу, назовите ее entries, во вторую таблицу combined

entries

study_id     participant    condition_1    condition_2   condition_3

   1          user_1          true            false        false

   1          user_2          true            true         false

   2          user_2          false           false        true

combined:

study_id  user_1condition_1  user_1condition_2  user_1condition_3  user_2condition_1  user_2condition_2 user_2condition_3

   1            true               false              false              true                true               false

   2            N/A                N/A                N/A                false               false              true

Мы можем видеть, что это, по сути, заполнение таблицы полями, которые являются декартовым произведением участников с условиями. Но я не уверен, как создать новую таблицу и заполнить ее запросами SQL.

1 Ответ

0 голосов
/ 08 января 2019

Вы можете выбрать группу вместе с MAX-логикой, чтобы получить желаемые результаты.

select study_id
       ,max(case when participant='user_1' then condition_1 end) as user_1condition_1
       ,max(case when participant='user_1' then condition_2 end) as user_1condition_2
       ,max(case when participant='user_1' then condition_3 end) as user_1condition_3
from entities
group by study_id
...