PSQL查询问题我如何对这些结果进行分组。里面有错误信息

时间:2014-02-10 15:55:41

标签: sql postgresql

我正在尝试对查询结果进行分组。我正在执行查询的表包含两个字段piste_name和lift_name都构成表的复合键。

这是我收到的错误消息:

  

错误:列“lift_location.piste_name”必须出现在GROUP BY子句中或用于聚合函数

我正在尝试的查询是:

SELECT piste_name, lift_name  FROM lift_location 
    GROUP BY lift_location.lift_name;

SELECT piste_name, lift_name  FROM lift_location 
    GROUP BY lift_name;

我认为问题出现了,因为piste_name也是复合键的一部分,所以它需要成为分组的一部分,但是有解决方法吗?

我希望我的查询返回piste_names并提升访问权限,但我希望它们以升降机的形式显示,而不是选择piste_names然后列表。

目前,我有:

    piste_name | lift_name
--------------------------------
      piste 1  |  lift x
      piste 1  |  lift y
      piste 2  |  lift x
      piste 2  |  lift z

我希望我的查询以这种格式显示:

   lift_name  | piste_name
--------------------------------
      lift x  |  piste 1
      lift x  |  piste 2
      lift y  |  piste 1
      lift z  |  piste 2

我该怎么做?

2 个答案:

答案 0 :(得分:3)

我认为你搞砸了你的结果的分组和排序。

SELECT lift_name, piste_name FROM lift_location ORDER BY lift_name, piste_name

这可以提供您想要的结果。那么为什么分组

答案 1 :(得分:1)

是不是

SELECT lift_name, piste_name  
FROM lift_location 
GROUP BY lift_name, piste_name
ORDER BY lift_name, piste_name;