如何选择GROUP BY语句中使用的字段

时间:2015-10-13 04:34:33

标签: sql postgresql group-by case

我想选择我在GROUP BY语句中使用的字段。 我的陈述是这样的

SELECT
    (CASE WHEN A.kcu_id is null THEN A.id ELSE A.kcu_id END) as id,
    ...
GROUP BY
    (CASE WHEN A.kcu_id is null THEN A.id ELSE A.kcu_id END),
    performance_cabang.tahun 

失败是因为

  

错误列" a.kcu_id"必须出现在GROUP BY子句中或用于聚合函数

我知道我必须在GROUP BY中使用该列,但我使用的GROUP BY语句使用CASE函数。我必须使用CASE功能,因为我不想将空ID分组

示例数据:

---------------------------------------
| Id | Name  | Kcu_id | Price         |
---------------------------------------
| 1  | Kcu_1 |        | 2000          |
---------------------------------------
| 2  | Kcp_2 | 1      | 3000          |
---------------------------------------

我希望GROUP BY能够产生类似这样的结果

------------------------------
| Id | Name  | Price         |
------------------------------
| 1  | Kcu_1 | 5000          |
------------------------------

Fyi,Kcu_id是带有' id'的外键。在同一张表中

1 个答案:

答案 0 :(得分:-1)

您不希望在“GroupBy”功能中使用案例功能。

例如:

选择     (例如,当A.kcu_id为空,那么A. A. ELSE A.kcu_id END)作为id,     ... 通过...分组     A.kcu_id,     performance_cabang.tahun

您只需要使用

组中的字段