我尝试查询非重复Update_Date,但同时返回一个列,用于计算非重复Update_Date的总数
当前的表(仅查询Update_Date):
Update_Date | Status
-------------------------------
2022-03-01 | 1
2022-03-02 | 2
2022-03-03 | 1
2022-03-03 | 2
2022-03-03 | 3
我的SQL现在:
SELECT
DISTINCT Update_Date,
COUNT (DISTINCT Update_Date) AS Update_Date_CNT
FROM TABLE
预期结果应为
Update_Date | Update_Date_CNT
-------------------------------
2022-03-01 | 3
2022-03-02 | 3
2022-03-03 | 3
现在我收到一个错误:
DB2数据库错误:错误[42803] [IBM][DB2/AIX 64] SQL 0119 N在SELECT子句、HAVING子句或ORDER BY子句中指定的以“CLC_YYMM”开头的表达式未在GROUP BY子句中指定,或者该表达式位于带有列函数的SELECT子句、HAVING子句或ORDER BY子句中,但未指定GROUP BY子句。SQLSTATE=42803
如果我只对两列中的一列运行SELECT,则不会抛出错误。
第一个
我猜这是因为Update_Date_CNT列返回1行,而Update_Date列返回3行,并且到目前为止语法没有说明为每个Update_Date行“重复”Update_Date_CNT返回的'3'?我在另一篇关于加入的帖子中读到,但错误消息提到GROUP BY -我该如何修复此错误?
3条答案
按热度按时间tktrz96b1#
免责声明,我不使用DB2,因此可能有更好的方法,但是无论是使用CTE还是派生查询,似乎都适用于DB211.1
选项#1
选项2
结果:
| 更新日期|更新日期计数|
| - -|- -|
| 2022年3月1日|三个|
| 2022年3月2日|三个|
| 2022年3月3日|三个|
kqhtkvqz2#
这里可以使用
COUNT()
作为解析函数:doinxwow3#
按如下方式使用
cross join
或