Sql 聚合子查询中缺少group by语句
我有一个查询,一段时间内同一客户有多个销售人员,因此我只想显示该客户的最新销售人员 我编写了以下查询以显示最新日期的客户和销售人员,但得到的错误是“聚合可能不会出现在WHERE子句中,除非它位于HAVING子句或select列表中包含的子查询中,并且正在聚合的列是外部引用。” 我不确定GROUPBY语句会在这里出现在哪里,假设这就是原因,希望有人能帮助我们使用正确的语法Sql 聚合子查询中缺少group by语句,sql,sql-server,Sql,Sql Server,我有一个查询,一段时间内同一客户有多个销售人员,因此我只想显示该客户的最新销售人员 我编写了以下查询以显示最新日期的客户和销售人员,但得到的错误是“聚合可能不会出现在WHERE子句中,除非它位于HAVING子句或select列表中包含的子查询中,并且正在聚合的列是外部引用。” 我不确定GROUPBY语句会在这里出现在哪里,假设这就是原因,希望有人能帮助我们使用正确的语法 select CUST_NAME, SALESMAN_NAME, year(invoice_Date) from ns.SA
select CUST_NAME, SALESMAN_NAME, year(invoice_Date)
from ns.SAR_COMBINED sc
where sc.invoice_date >= (select max(sc.invoice_date) from
ns.SAR_COMBINED)
谢谢您想要相关子查询:
select CUST_NAME, SALESMAN_NAME, year(invoice_Date)
from ns.SAR_COMBINED sc
where sc.invoice_date >= (select max(sc2.invoice_date)
from ns.SAR_COMBINED sc2
where sc2.cust_name = sc.cust_name
);
correlation子句是子查询中的
where
子句。它将sc2
中的客户与外部查询中的客户进行匹配。您也可以使用行号()
非常感谢。使用您的查询,我得到了相同的错误-即“聚合可能不会出现在WHERE子句中,除非它位于HAVING子句或select列表中包含的子查询中,并且被聚合的列是外部引用。”@Danimov82。打字错误max()
需要在内部查询别名上,而不是在外部查询上。@Danimov82。是的。
select * from (
select CUST_NAME, SALESMAN_NAME,
year(invoice_Date) ,
row_number() over(partition by cust_name order by invoice_date desc ) rn
from ns.SAR_COMBINED sc) t where t.rn=1