我正试图从一个表格中获取特定格式的调查数据.但是我的所有尝试似乎都是因为DB上的连接太多/太重而无法提交数据库.
我的数据如下:
id, user, question_id, answer_id,
1, 1, 1, 1
3, 1, 3, 15
4, 2, 1, 2
5, 2, 2, 12
6, 2, 3, 20
Run Code Online (Sandbox Code Playgroud)
大约有250,000行,每个用户大约有30行.我希望结果看起来像:
user0, q1, q2, q3
1, 1, NULL, 15
2, 2, 12, 20
Run Code Online (Sandbox Code Playgroud)
这样每个用户在结果中都有一行,每个用户每个答案都有一个单独的列.
我正在使用Postgres,但任何SQL语言的答案都会受到赞赏,因为我可以翻译成Postgres.
编辑:我还需要能够处理不回答问题的用户,即上面的示例q2用户1.
有谁知道如何在 PostgreSQL 中将行转置为列?例如,我有下表:-
Period T1 T2 Difference
---------- ------- -------- -----------
MAR-2013 34525 319 34206
AUG-2014 35632 14453 21179
OCT-2014 28124 10082 18042
JUN-2014 20571 9353 11218
MAY-2015 44963 39097 5866
FEB-2013 1941 127 1814
JUL-2014 14510 12965 1545
APR-2015 32446 30992 1454
MAY-2014 13510 12136 1374
APR-2014 8042 6967 1075
JAN-2013 1107 86 1021
DEC-2014 30764 30076 688
SEP-2014 6886 6380 506
MAR-2014 4695 4242 453
Run Code Online (Sandbox Code Playgroud)
但我需要输出为
Period MAR-2013 AUG-2014 OCT-2014 JUN-2014 MAY-2015 FEB-2013 JUL-2014 APR-2015 MAY-2014 APR-2014 JAN-2013 …Run Code Online (Sandbox Code Playgroud)