【发布时间】:2026-02-01 12:25:02
【问题描述】:
我正在尝试在 Teradata 中编写一个查询,该查询将按月返回每个商店中发生的事务数的计数。我发现的主要问题是交易日期存储为日期(显然),我想按月年对它们进行分组。以下是我对查询的尝试。
SELECT
COUNT(txn_nbr),
str_nbr,
EXTRACT(MONTH FROM txn_dt) AS txn_month, EXTRACT (YEAR FROM txn_dt) AS txn_year
FROM tbl_name
WHERE str_nbr IN (xxxx, xxxx, xxxx)
AND fill_sold_dt BETWEEN '2016-12-31' AND '2017-08-31'
GROUP BY 4,3
我收到的错误消息是“SELECT Failed. 3504: Selected non-aggregate must be part of the associated group.”请问,谁能帮助我正确编写查询?我在 SQL 方面没有那么丰富的经验,我将不胜感激。
【问题讨论】:
-
您需要将
str_nbr添加到您的群组中。GROUP BY 2,3,4 -
JNevill,非常感谢。这正是问题所在。查询成功了!感谢您抽出宝贵时间回复。
-
仅供参考 - 您始终需要按 select 语句中未对其执行聚合函数的所有列进行分组。
-
感谢您的提示。回想起来,回顾一下我收到的错误消息,这是完全有道理的。我会记住这一点。再次感谢你。这让我很开心:)