2017-09-25 39 views
0

我正在尝试在Teradata中编写一个查询,它将返回按月在每个商店中发生的交易次数。我发现的主要问题是交易日期存储为日期(显然),我想按月份对它们进行分组。以下是我在查询中的尝试。如何在Teradata中编写SQL查询,该查询返回每月商店的交易数量?

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 

我收到错误消息“选择失败3504:选择非集合必须是关联组的一部分。”请有谁能帮我正确写出查询?我不是那种SQL经验丰富的人,我会非常感激。

+1

您需要通过以str_nbr'加上'到组。 'GROUP BY 2,3,4' – JNevill

+0

JNevill,非常感谢。这正是问题所在。查询工作!感谢您花时间回复。 – Brian

+0

仅供参考 - 您总是需要按您的select语句中的所有列进行分组,而这些列没有对其执行聚合函数。 – tommyO

回答

2

极品组由str_nbr:

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 2,3,4