TSQL超前/滞后如何为每个组设置为NULL

时间:2017-06-20 22:46:55

标签: tsql

我需要处理重叠输入/输出日期,所以我将这个代码与Leadl / Lag完美配合,而不是我需要通过CustID为每个组处理这些值,因此每个CustID的第一个ddStart将在< strong> 延迟 ,最后一个ddStart在 Lead 中将为NULL,在下面的示例中,它会从另一个获取前导/滞后值CustID,我不需要。

对不起, 求助: 解决方案如下,没想到分手。

CREATE TABLE cust (CustID int, DDStart date, DDEnd date )
--DROP table cust
INSERT INTO cust VALUES 
(111, '2012-01-01', '2012-01-31' ),
(222, '2014-08-01', '2014-08-31' ),
(222, '2014-09-01', '2014-09-30' ),
(222, '2014-10-01', '2014-12-31' ),
(333, '2016-08-01', '2016-08-31' ) 

SELECT  custID,   ddStart, ddEnd,
          '_' [_] ,
           LEAD (ddStart)  OVER (PARTITION BY custID ORDER BY custID, ddStart) ddStart_lead,
           LAG  (ddEnd)    OVER (PARTITION BY custID ORDER BY custID, ddStart) ddEnd_lag,
                   ROW_NUMBER() OVER(PARTITION BY CustID ORDER BY ddStart ) rn
 FROM cust

1 个答案:

答案 0 :(得分:0)

抱歉空白帖子,解决了。在我的手册中,我有一个没有被分配的例子,使用它解决了这个问题。 Tx很多