1. 程式人生 > 其它 >MSSQL 分組取最大值最小值最後一個值-LAST_VALUE

MSSQL 分組取最大值最小值最後一個值-LAST_VALUE

背景:

根據 特定欄位 分組,獲取第一次和最後一次的時間,同時要求獲得最後一次的其他資訊

資料

 結果

指令碼

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 BETWEEN
UNBOUNDED 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

Reference:

https://blog.csdn.net/sfrankzhang/article/details/7161202