分区中每个序列的最大日期

时间:2018-08-30 16:23:02

标签: sql sql-server tsql sql-server-2016

我想看看是否有人知道如何在SQL Server 2016中使用“ row_num”列作为指标来获取每个“ id”中的最大和最小日期。

下面的屏幕快照在“ min_date”和“ max_date”列中显示了所需的输出。

sample dataset

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

您可以使用窗口的MIN / MAX:

WITH cte AS (
  SELECT *,SUM(CASE WHEN row_num > 1 THEN 0 ELSE 1 END) 
         OVER(PARTITION BY id, cat ORDER BY date_col) AS grp
  FROM tab
)
SELECT *, MIN(date_col) OVER(PARTITION BY id, cat, grp) AS min_date,
          MAX(date_col) OVER(PARTITION BY id, cat, grp) AS max_date
FROM cte
ORDER BY id, date_col, cat;

Rextester Demo

答案 1 :(得分:1)

尝试类似

UserHelperMethods.GetUserProfilePic(foundUser);