發表文章

目前顯示的是 5月, 2025的文章

[SQL] MSSQL 使用 ROW_NUMBER 替代 GroupBy

圖片
如題,之前寫過許多類似情境但未紀錄,所以本次也記錄一下。該需求主要是"找出多個類別中特定條件的資料",聽起來很複雜,實際案例如: <找出每個員工最新的銷售紀錄>,這種情境若使用Group By寫會非常複雜,因為Group By需要聚合函數,所以可以使用ROW_NUMBER 替代 Group By。 不廢話,以下為範例程式碼: -- 建立 Temp Table CREATE TABLE #EmployeeSales ( EmployeeID INT, EmployeeName NVARCHAR(50), SaleDate DATE, SaleAmount DECIMAL(10, 2) ); -- 插入測試數據 INSERT INTO #EmployeeSales (EmployeeID, EmployeeName, SaleDate, SaleAmount) VALUES (1, 'Alice', '2023-05-01', 500.00), (1, 'Alice', '2023-05-05', 800.00), (1, 'Alice', '2023-05-10', 200.00), (2, 'Bob', '2023-05-01', 300.00), (2, 'Bob', '2023-05-03', 700.00), (3, 'Charlie', '2023-05-01', 400.00), (3, 'Charlie', '2023-05-08', 600.00), (3, 'Charlie', '2023-05-10', 900.00); -- 使用 ROW_NUMBER() 實現類似 GROUP BY 效果 SELECT EmployeeID, EmployeeName, SaleDate, SaleAmount FROM ( SELECT EmployeeID, EmployeeName, S...