sql - SQL - 将行旋转到列并采用笛卡尔积
问题描述
我正在尝试仅使用 SQL 查询来执行以下操作。我不太确定如何,但认为我应该使用枢轴和交叉连接?
将第一个表(称为它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 查询填充它。
解决方案
您可以选择 group by 以及 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
推荐阅读
- python - 使用 pandas 操作数据时出错(以防数据丢失)
- java - 在 google colab 中上传文件
- c++ - 无法生成预期的输出
- splunk - 在 splunk 中将国旗表情符号注释到 3166 个国家/地区代码
- javascript - 导入 JSPDF:未捕获的 SyntaxError:无法在模块外使用 import 语句
- sql - SQL - 如何计算期初余额和期末余额
- c - strtok 返回 null 但不返回 printf
- python - 在 plotly 中绘制带有几列的数据框
- docker - 带有电子邮件的 Keycloak 初始管理员用户
- python - 避免不必要的类声明