错误:属性必须分组或在聚合函数 NETEZZA SQL 中

问题描述

我正在编写一个 SQL 来创建一个日历表,如下所示,并收到错误“属性 T1.CALENDAR_DATE 必须在聚合函数中分组或使用

我写的代码是

WITH CALENDAR AS
(
SELECT
EXTRACT(EPOCH FROM DATE(NOW()-1)-T1.CALENDAR_DATE)/7 AS ROLLING_WEEK,MIN(T1.WEEK_OF_YEAR) AS WEEK,MAX(T1.CALENDAR_DATE) AS LAST_DAY_WEEK,MIN(T1.CALENDAR_DATE) AS FIRST_DAY_WEEK

FROM DIM_GINZ_DATE AS T1
WHERE T1.ROLLING_MONTH BETWEEN 0 AND 84
GROUP BY T1.ROLLING_WEEK
)

SELECT *
FROM CALENDAR

这里会出现什么问题?

谢谢:)

解决方法

您应该在 T1.CALENDAR_DATE 中使用 GROUP by 或在 EXTRACT(EPOCH FROM DATE(NOW()-1)-T1.CALENDAR_DATE)/7 上使用一些聚合函数

WITH CALENDAR AS
(
SELECT
EXTRACT(EPOCH FROM DATE(NOW()-1)-T1.CALENDAR_DATE)/7 AS ROLLING_WEEK,-- something like this need to be implemented if you dont want to group by T1.CALENDAR_DATE
-- EXTRACT(EPOCH FROM DATE(NOW()-1)-MIN(T1.CALENDAR_DATE))/7 AS ROLLING_WEEK 
MIN(T1.WEEK_OF_YEAR) AS WEEK,MAX(T1.CALENDAR_DATE) AS LAST_DAY_WEEK,MIN(T1.CALENDAR_DATE) AS FIRST_DAY_WEEK

FROM DIM_GINZ_DATE AS T1
WHERE T1.ROLLING_MONTH BETWEEN 0 AND 84
GROUP BY T1.ROLLING_WEEK,T1.CALENDAR_DATE -- like this
-- or use EXTRACT(EPOCH FROM DATE(NOW()-1)-T1.CALENDAR_DATE)/7
)

SELECT *
FROM CALENDAR

如果未在 select 子句中使用,则不能在 group by 子句中使用未聚合列。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...