我有一个查询,随着时间的推移,同一位客户有多个销售人员,因此我只想显示该给定客户的最新销售人员。
我编写了以下查询,以显示客户和销售人员的最新日期,但收到错误消息:“除非在HAVING子句或选择列表,并且要聚合的列是外部引用。”
不知道group by语句在哪里,因为这就是原因,所以希望有人可以提供正确的语法帮助。
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)
谢谢
答案 0 :(得分:1)
您还可以使用row_number()
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
答案 1 :(得分:0)
您需要一个相关子查询:
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
);
相关子句是子查询中的where
子句。它将sc2
中的客户与外部查询中的客户进行匹配。