[MSSQL] 外部資料表有多筆資料時,如何JOIN單一資料
有一個需求如下:
列出客戶資訊與購買最大的訂單金額
其表格設計如下:
預期呈現資料如下:
如上圖所示,
主表資訊為「客戶編號」、「客戶名稱」,
而外部表資訊則只需要取個別客戶「購買金額」最大值,
SQL指令寫法可如下:
SELECT
c.客戶編號,
c.客戶名稱,
o.購買金額 AS 最大購買金額
FROM 客戶 c
LEFT JOIN (
SELECT
ROW_NUMBER() OVER (PARTITION BY 客戶編號 ORDER BY 購買金額 DESC) SN, -- 依據客戶編號劃分,將購買金額倒序並產生流水序號
客戶編號,
購買金額
FROM 訂單
) AS o ON
o.客戶編號 = c.客戶編號
AND o.SN = 1 -- 因為使用倒序,所以流水序號1的資料為最大購買金額
如此一來就可以達成效果
Write By Charley Chang
新手發文,若有錯誤還請指教,
歡迎留言或Mail✉給我
本著作係採用創用 CC 姓名標示-非商業性-相同方式分享 4.0 國際 授權條款授權.