相关疑难解决方法(0)

SQL将行转置为列

我有一个有趣的难题,我认为可以用纯粹的SQL解决.我有类似于以下的表:

responses:

user_id | question_id | body
----------------------------
1       | 1           | Yes
2       | 1           | Yes
1       | 2           | Yes
2       | 2           | No
1       | 3           | No
2       | 3           | No


questions:

id | body
-------------------------
1 | Do you like apples?
2 | Do you like oranges?
3 | Do you like carrots?
Run Code Online (Sandbox Code Playgroud)

我想得到以下输出

user_id | Do you like apples? | Do you like oranges? | Do you like carrots?
---------------------------------------------------------------------------
1 …
Run Code Online (Sandbox Code Playgroud)

sql postgresql pivot pivot-without-aggregate

38
推荐指数
3
解决办法
5万
查看次数

Postgres - 将行转置为列

我有下表,它为每个用户提供了多个电子邮件地址.

在此输入图像描述

我需要将其展平为用户查询的列.根据创建日期向我提供"最新"3个电子邮件地址.

user.name | user.id | email1          | email2           | email3**

Mary      | 123     | mary@gmail.com  | mary@yahoo.co.uk | mary@test.com

Joe       | 345     | joe@gmail.com   | [NULL]           | [NULL]
Run Code Online (Sandbox Code Playgroud)

sql database postgresql transpose crosstab

38
推荐指数
2
解决办法
9万
查看次数

PostgreSQL将列转换为行?移调?

我有一个PostgreSQL函数(或表),它给我以下输出:

Sl.no    username    Designation    salary   etc..
 1        A           XYZ            10000    ...
 2        B           RTS            50000    ...
 3        C           QWE            20000    ...
 4        D           HGD            34343    ...
Run Code Online (Sandbox Code Playgroud)

现在我想要输出如下:

Sl.no            1       2        3       4       ...
 Username        A       B        C       D       ...
 Designation     XYZ     RTS      QWE     HGD     ...
 Salary          10000   50000    20000   34343   ...
Run Code Online (Sandbox Code Playgroud)

这该怎么做?

sql postgresql pivot-table dynamic-sql crosstab

25
推荐指数
4
解决办法
5万
查看次数

转置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中转置列和行(即,如何切换行和列)?

可能重复:
转置sql结果,以便一列转到多列

我想在我的PSQL数据库中进行一种行/列交换.这是我的示例数据库:

id  place   price   year
1   U.S.    80  2000
2   U.S.    60  2001
3   U.S.    40  2002    
4   U.K.    600 2000
5   U.K.    500 2001
6   U.K.    350 2002
Run Code Online (Sandbox Code Playgroud)

我想将该表转换为以下示例:

year    U.S.    U.K.
2000    80  600
2001    60  500
2002    40  350
Run Code Online (Sandbox Code Playgroud)

这在PostgreSQL中是否可行?

sql postgresql pivot

2
推荐指数
1
解决办法
6641
查看次数