Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将SQL查询中的行转换为列_Sql_Postgresql_Pivot - Fatal编程技术网

如何将SQL查询中的行转换为列

如何将SQL查询中的行转换为列,sql,postgresql,pivot,Sql,Postgresql,Pivot,我有一个SQL查询,它生成一个包含用户及其任务编号答案的表: 我应该使用哪个SQL查询来获取以下内容: 我有50个问题编号和大约1500个用户。不幸的是,在我看来,简单的选择和分组在这里是做不到的 多谢各位 您可以使用条件聚合: select username, max(answer) filter (where task_number = 1) as task_1, max(answer) filter (where task_number = 2) as ta

我有一个SQL查询,它生成一个包含用户及其任务编号答案的表:

我应该使用哪个SQL查询来获取以下内容:

我有50个问题编号和大约1500个用户。不幸的是,在我看来,简单的选择和分组在这里是做不到的


多谢各位

您可以使用条件聚合:

select username,
       max(answer) filter (where task_number = 1) as task_1,
       max(answer) filter (where task_number = 2) as task_2
from t
group by username;

样本数据最好以如下方式表示。有关如何创建美观的表格的一些提示,请参阅。它很有效!非常感谢你!但是,你能解释一下为什么我们应该使用max(答案)?@VladDeryabkin。只有一行与筛选条件匹配。您需要一个聚合函数,因此
max()
与任何此类函数一样好。