MSSQL 分組取最大值最小值最後一個值-LAST_VALUE
阿新 • • 發佈:2022-05-10
背景:
根據 特定欄位 分組,獲取第一次和最後一次的時間,同時要求獲得最後一次的其他資訊
資料
結果
指令碼
WITH V_All AS ( SELECT 1 AS UserCode, '2022-05-01' AS DateTime, 'asdasd1' AS Remark UNION ALL SELECT 1 AS UserCode, '2022-05-02' AS DateTime, 'asdasd2' AS Remark UNION ALL SELECT 1 AS UserCode, '2022-05-03' AS DateTime, 'asdasd3' AS Remark UNION ALL SELECT 2 AS UserCode, '2022-05-04' AS DateTime, 'asdasd4' AS Remark UNION ALL SELECT 2 AS UserCode, '2022-05-05' AS DateTime, 'asdasd5' AS Remark UNION ALL SELECT 2 AS UserCode, '2022-05-06' AS DateTime, 'asdasd6' AS Remark UNION ALL SELECT 3 AS UserCode, '2022-05-07' AS DateTime, 'asdasd7' AS Remark ), V_Group as ( SELECT UserCode, MIN(DateTime) MinDateTime, MAX(DateTime) MaxDateTime FROM V_All GROUP BY UserCode ), V_Value as ( SELECT DISTINCT UserCode , FIRST_VALUE(Remark) OVER (PARTITION by UserCode ORDER BY DateTime RANGE BETWEENUNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FIRST_VALUE , LAST_VALUE(Remark) OVER (PARTITION by UserCode ORDER BY DateTime RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) LAST_VALUE FROM V_All ) --SELECT * FROM V_All SELECT * FROM V_Group G INNER JOIN V_Value V ON G.UserCode = V.UserCode