Group by 语句不适用于 Select Case

Posted

技术标签:

【中文标题】Group by 语句不适用于 Select Case【英文标题】:Group by statement not working with Select Case 【发布时间】:2021-04-03 22:39:34 【问题描述】:
SELECT ZRECNROOT,
       CASE
         WHEN ZSPIDCAT = 'VEN_NAME_1' THEN
          ZSPIDENT
       END as VEN_NAME,
       CASE
         WHEN ZSPIDCAT = 'VENDOR_ID' THEN
          ZSPIDENT
       END as VENDORID
  FROM T1

我已经编写了这个 SQL 语句,它给出如下数据

 ZRECNROOT VEN_NAME VENDORID 
 123       ABC      ? 
 123       ?        12345

现在我想使用 group by RECNROOT 合并这些记录,但是 group by 在这里抛出错误。

【问题讨论】:

【参考方案1】:

由于ZSPIDCATZSPIDENT 的非聚合列而引发错误。所以,你需要一个额外的聚合以及GROUPing BY ZRECNROOT 比如

SELECT ZRECNROOT,
       MAX(CASE
         WHEN ZSPIDCAT = 'VEN_NAME_1' THEN
          ZSPIDENT
       END) as VEN_NAME,
       MAX(CASE
         WHEN ZSPIDCAT = 'VENDOR_ID' THEN
          ZSPIDENT
       END) as VENDORID
  FROM T1
 GROUP BY ZRECNROOT

其中MAX()MIN() 聚合可能具有非数字参数,这与AVG()SUM() ..等其他一些参数不同。

【讨论】:

以上是关于Group by 语句不适用于 Select Case的主要内容,如果未能解决你的问题,请参考以下文章

HSQLDB - 可更新语句不适用于“SELECT TOP”或“ORDER BY”

sql语句中的group by啥意思

sql语句中的group by啥意思

sql中group by 是啥意思啊?请教谢谢

SQL sort by desc 不适用于 group by

[Mysql 查询语句]——分组查询group by