相关疑难解决方法(0)

转置sql结果,使一列进入多列

我正试图从一个表格中获取特定格式的调查数据.但是我的所有尝试似乎都是因为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.

sql postgresql crosstab

5
推荐指数
1
解决办法
3141
查看次数

将行转换为 PostgreSQL 中的列?

有谁知道如何在 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)

sql postgresql pivot

5
推荐指数
1
解决办法
7529
查看次数

标签 统计

postgresql ×2

sql ×2

crosstab ×1

pivot ×1