我有一个有趣的难题,我相信可以用纯 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?
我想得到以下输出
user_id | Do you like apples? | Do you like oranges? | Do you like carrots?
---------------------------------------------------------------------------
1 | Yes | Yes | No
2 | Yes | No | No
我不知道会有多少问题,而且它们是动态的,所以我不能只为每个问题编写代码。我正在使用 PostgreSQL,我相信这称为转置,但我似乎找不到任何说明在 SQL 中执行此操作的标准方法的任何内容。我记得在大学的数据库课上这样做过,但那是在 MySQL 中,老实说,我不记得我们是怎么做到的。
我假设它将是连接和GROUP BY
语句的组合,但我什至不知道如何开始。
有人知道怎么做吗?非常感谢!
编辑1:我发现了一些关于使用交叉表的信息,这似乎是我想要的,但我无法理解它。链接到更好的文章将不胜感激!