SQL Server:按序列号聚合
我需要一些帮助来收集一些数据。假设我有下表:SQL Server:按序列号聚合,sql,sql-server,sql-server-2008,sequence,gaps-and-islands,Sql,Sql Server,Sql Server 2008,Sequence,Gaps And Islands,我需要一些帮助来收集一些数据。假设我有下表: number Name From Date To Date Sequency No_ ---------------------------------------------------- 123440 MJCL 03/12/2014 02/09/2015 1 123440 MJCL 07/09/2015 06/03/2016 1 123440 MJCL 07/03/2016 06/09/201
number Name From Date To Date Sequency No_
----------------------------------------------------
123440 MJCL 03/12/2014 02/09/2015 1
123440 MJCL 07/09/2015 06/03/2016 1
123440 MJCL 07/03/2016 06/09/2016 2
123440 MJCL 07/09/2016 06/03/2017 3
123440 MJCL 07/03/2017 31/12/9999 4
123442 GJSVF 15/12/2014 14/06/2015 1
123442 GJSVF 15/06/2015 14/12/2015 2
123442 GJSVF 15/12/2015 14/06/2016 3
123442 GJSVF 27/03/2017 26/03/2018 1
我需要一个SQL查询来输出以下内容:
number Name From Date To Date
--------------------------------------
123440 MJCL 03/12/2014 02/09/2015
123440 MJCL 07/09/2015 31/12/9999
123442 GJSVF 15/12/2014 14/06/2016
123442 GJSVF 27/03/2017 26/03/2018
基本上,我需要的是通过[sequence No_uu]连接行,并返回[sequence No_u]=1的[From Date]和序列最后一个[sequence No_u]的[to Date]。有什么想法吗
请注意,数据库是SQL Server 2008 这称为问题
下面是一个使用行数窗口函数的技巧
;WITH cte
AS (SELECT *,
Grp = Row_number()OVER(partition BY number ORDER BY [From Date],[Sequency No_]) - [Sequency No_]
FROM Yourtable)
SELECT number,
NAME,
[From Date] = Min([From Date]),
[To Date] = Max([To Date])
FROM cte
GROUP BY number,
NAME,
Grp
试试这个..这个对你有用:
SELECT number,Name,MAX(From_Date) From_Date,MAX(To_Date) To_Date
FROM Trans_Tab
GROUP BY number,Name
UNION ALL
SELECT number,Name,MIN(From_Date) From_Date,MIN(To_Date) To_Date
FROM Trans_Tab
GROUP BY number,Name
ORDER BY number,Name
你试过什么吗?所以,这不是一个代码编写服务。我尝试了在其他问题中看到的差距和孤岛问题解决方案,但我没有在一组一组地添加我的组。P的答案ரதீப் 解决我的问题。这会给我每个数字的第一个和最后一个记录。我需要通过[sequence No_uu]连接行,并返回[sequence No_u]=1的[From Date]和序列最后一个[sequence No_u]的[to Date]。Pரதீப் 这个答案对我有用。谢谢