SQL多个开始日期到结束日期

Ben

我有一个具有以下格式的表(无法更改)

ClientID  |  RefAd1  |  Cluster Start Date  |  Cluster End Date

100001    |   R1234  |    2014-11-01        |     
100001    |   R1234  |    2014-11-10        |  
100001    |   R1234  |    2014-11-20        |

我想得出的是:

ClientID  |  RefAd1  |  Cluster Start Date  |  Cluster End Date

100001    |   R1234  |    2014-11-01        |     2014-11-10          
100001    |   R1234  |    2014-11-10        |     2014-11-20    
100001    |   R1234  |    2014-11-20        |     NULL

我已经在这里进行搜索,并且自己进行了多次尝试,但无法使其正常工作。

我无法更新源表(或将另一个表添加到数据库中),所以我将在视图中进行保存(可以保存)

我们将不胜感激,感谢您的帮助,已经花了整整一天时间了!

萨拉斯·阿瓦纳武(Sarath Avanavu)

使用自我加入获取下一条记录

;WITH CTE AS
(
    SELECT ROW_NUMBER() OVER(ORDER BY [Cluster Start Date])RNO,*
    FROM YOURTABLE
)
SELECT C1.ClientID,C1.RefAd1,C1.[Cluster Start Date],C2.[Cluster Start Date] [Cluster End Date]
FROM CTE C1
LEFT JOIN CTE C2 ON C1.RNO=C2.RNO-1 

编辑:

要更新表,可以使用以下查询

;WITH CTE AS
(
    SELECT ROW_NUMBER() OVER(ORDER BY [Cluster Start Date])RNO,*
    FROM #TEMP
)
UPDATE #TEMP SET [Cluster End Date] = TAB.[Cluster End Date]
FROM
(
    SELECT C1.ClientID,C1.RefAd1,C1.[Cluster Start Date],C2.[Cluster Start Date] [Cluster End Date]
    FROM CTE C1
    LEFT JOIN CTE C2 ON C1.RNO=C2.RNO-1 
)TAB
WHERE TAB.[Cluster Start Date]=#TEMP.[Cluster Start Date]

编辑2:

如果您要为ClientId完成此操作RefAd1

;WITH CTE AS
(
    -- Get current date and next date for each type of ClientId and RefAd1
    SELECT ROW_NUMBER() OVER(PARTITION BY ClientID,RefAd1 ORDER BY [Cluster Start Date])RNO,*
    FROM #TEMP
)
UPDATE #TEMP SET [Cluster End Date] = TAB.[Cluster End Date]
FROM
(
    SELECT C1.ClientID,C1.RefAd1,C1.[Cluster Start Date],C2.[Cluster Start Date] [Cluster End Date]
    FROM CTE C1
    LEFT JOIN CTE C2 ON C1.RNO=C2.RNO-1 AND C1.ClientID=C2.ClientID AND C1.RefAd1=C2.RefAd1
)TAB
WHERE TAB.[Cluster Start Date]=#TEMP.[Cluster Start Date] AND TAB.ClientID=#TEMP.ClientID AND TAB.RefAd1=#TEMP.RefAd1

如果您只想这样做ClientId,请删除的条件RefAd1

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从开始日期到结束日期 Java 的周数

开始日期及结束的SQL语句

从开始日期到结束日期的每个日期的行

在Java中从开始日期到结束日期生成日期

从开始日期到结束日期的每个日期生成行

SAS:在宏中从开始日期到结束日期进行迭代

熊猫date_range从结束日期到开始日期

设置开始日期和结束日期以存储到 Firebase 云中?

SQL 按键重复开始和结束日期

从SQL中的开始日期列表中获取结束日期

MS SQL将日期行合并为开始结束日期

合并记录以显示开始日期和结束日期SQL

Sql 如何从 5 周开始日期和结束日期获取

从给定的季度 SQL 计算开始日期和结束日期

结束日期与开始日期之间的日期差

从开始日期等于开始日期和结束日期之间的sql中检索数据

如何使用sql对同一范围内的多个记录的开始日期和结束日期进行分组

将用户输入的开始日期和结束日期值传递到生成数据框的sql查询中

datepicker jquery中的多个开始和结束日期验证

取消堆叠开始和结束日期到月份

EasyAdmin Symfony日期从2012年开始,到2022年结束

将日期时间索引枢轴到开始和结束列

多个日期行以间隔开始日期和结束日期在 df 中转入 2 列

如何在查询C#中检查开始日期和结束日期之间的多个日期

获取开始日期到结束日期之间的日期(以php月为单位)

如何开始和结束日期

开始日期和结束日期的对齐

获取开始日期和结束日期

日期范围中的开始和结束日期