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】:由于ZSPIDCAT
和ZSPIDENT
的非聚合列而引发错误。所以,你需要一个额外的聚合以及GROUP
ing 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”