我有一个有趣的难题,我相信它可以纯粹地用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:我发现了一些关于使用交叉表的信息,这似乎就是我想要的,但我很难理解它。 请提供更好的文章链接,将不胜感激!