Sql 您如何在多种情况下使用have?

Sql 您如何在多种情况下使用have?,sql,teradata,having,Sql,Teradata,Having,在以下代码中,如何排除会员每年超过500美元的支出,而不是所有年份的总支出 select Year ,month ,memberkey ,sum(spending) as spending from table1 group by 1,2,3 HAVING子句在这里不起作用,因为您确实希望在年度级别进行聚合,以确定应包括哪些记录。传统上,您可以通过相关子查询执行此操作,但在Teradata中,您可以使用QUALIFY子句: 发布您的查询,我们可能会帮助您解决问题。我更新了我的答案,

在以下代码中,如何排除会员每年超过500美元的支出,而不是所有年份的总支出

 select 

Year
,month
,memberkey
,sum(spending) as spending

from table1
group by 
1,2,3 

HAVING子句在这里不起作用,因为您确实希望在年度级别进行聚合,以确定应包括哪些记录。传统上,您可以通过相关子查询执行此操作,但在Teradata中,您可以使用QUALIFY子句:


发布您的查询,我们可能会帮助您解决问题。我更新了我的答案,特别关注使用Qualified as a solution。我试图将这一行添加到我的代码中,但它指出选定的非聚合值必须是关联组的一部分。但在添加这一行之前,我的分组很好。您知道问题可能是什么吗?也许将您的查询放入子查询中,然后在子查询之外执行限定。这确实是一个应该对结果进行最后一步的步骤,这可以在中间的一组中变得棘手。创建易失性表C作为选择年,年龄,memberID,按1,2,3计算表1组的支出总额,按年度划分,memberID<5000,数据这就是我现在拥有的。
SELECT "Year"
  ,"Month"
  ,MemberKey
  ,spending
from table1
QUALIFY sum(spending) OVER (PARTITION BY "Year", MemberID) < 500