我有一个表,其中的记录是日期绑定的。示例
UserID | Amount | StartDate | EndDate
1500 100 1/1/2014 12/31/2014
1500 100 1/1/2015 12/31/2015
1500 50 1/1/2016 12/31/2016
1500 100 1/1/2017 12/31/2099
我想要得到的结果是
UserID Amount StartDate EndDate
1500 100 1/1/2014 12/31/2015
1500 50 1/1/2016 12/31/2016
1500 100 1/1/2017 12/31/2099
如果记录相同,我需要将它们连接起来。请让我知道,如果你有任何建议,以获得所需的结果。我需要能够在sql server 2012上运行查询。
谢谢,
sql代码段创建临时表-
IF OBJECT_ID('tempdb..#SplitRecords') IS NOT NULL
DROP TABLE #SplitRecords
CREATE TABLE #SplitRecords
(
UserID INT,
Amount DECIMAL(19,4),
StartDate DATETIME,
EndDate DATETIME
)
INSERT INTO #SplitRecords
( UserID, Amount, StartDate, EndDate )
VALUES ( 1500, -- UserID - int
100, -- Amount - decimal
'1/1/2014', -- StartDate - datetime
'12/31/2014' -- EndDate - datetime
)
INSERT INTO #SplitRecords
( UserID, Amount, StartDate, EndDate )
VALUES ( 1500, -- UserID - int
100, -- Amount - decimal
'1/1/2015', -- StartDate - datetime
'12/31/2015' -- EndDate - datetime
)
INSERT INTO #SplitRecords
( UserID, Amount, StartDate, EndDate )
VALUES ( 1500, -- UserID - int
100, -- Amount - decimal
'1/1/2016', -- StartDate - datetime
'12/31/2016' -- EndDate - datetime
)
INSERT INTO #SplitRecords
( UserID, Amount, StartDate, EndDate )
VALUES ( 1500, -- UserID - int
100, -- Amount - decimal
'1/1/2017', -- StartDate - datetime
'12/31/2099' -- EndDate - datetime
)
对第一个表执行左连接,其中开始日期为group by和min,对第二个表执行左连接,其中连接的是group by和max结束日期。这对你有帮助吗?
我现在不会写代码,但我明天会。