连接分割日期绑定记录的SQL查询,如果它们是相同的



我有一个表,其中的记录是日期绑定的。示例

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结束日期。这对你有帮助吗?

我现在不会写代码,但我明天会。

相关内容

最新更新