[英]Missing a group by statement in an aggregate sub-query
我有一個查詢,隨着時間的推移,同一位客戶有多個銷售人員,因此我只想顯示該給定客戶的最新銷售人員。
我編寫了以下查詢,以顯示客戶和銷售人員的最新日期,但收到錯誤消息:“除非在HAVING子句或選擇列表中包含的子查詢中,否則聚合可能不會出現在WHERE子句中,並且正在匯總的列是外部參考。”
不知道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)
謝謝
您還可以使用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
您需要一個相關的子查詢:
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
中的客戶與外部查詢中的客戶匹配。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.