我有一个由以下查询填充的临时表:
SELECT att.property, att.stayDate, att.addedTimeStamp, att.rowNumber
FROM
(
SELECT RIGHT('000' + CAST(att.property AS VARCHAR(4)),4) AS property,
CAST(att.stay_date AS DATE) AS stayDate,
CAST(added_timestamp AS DATETIME) AS addedTimeStamp,
ROW_NUMBER() OVER(PARTITION BY property, stay_date ORDER BY added_timestamp) AS rowNumber
FROM dbo.tb_rm_portal_attention_days att
WHERE att.revenue_initiative = 'Test'
) att
然后将以下内容放入临时表中:
property stayDate addedTimeStamp rowNumber
0053 2020-03-20 2019-03-04 17:10:32.837 1
0053 2020-03-20 2019-03-05 17:10:29.480 2
0053 2020-03-20 2019-03-06 17:10:25.940 3
0053 2020-03-20 2019-03-07 17:10:21.930 4
0100 2020-03-25 2019-03-04 17:10:32.837 1
0100 2020-03-25 2019-03-05 17:10:29.480 2
0100 2020-03-25 2019-03-06 17:10:25.940 3
0100 2020-03-25 2019-03-07 17:10:21.930 4
离开这里,我想要属性
、stayDate
、addedTimeStamp
,然后是下一个addedTimeStamp
> 在组中,如果是返回 NULL 或其他什么的最大值...不确定这是否有意义...
我的最终目标是从临时表中获取以下内容:
property stayDate firstTimeStamp secondTimeStamp
0053 2020-03-20 2019-03-04 17:10:32.837 2019-03-05 17:10:29.480
0053 2020-03-20 2019-03-05 17:10:29.480 2019-03-06 17:10:25.940
0053 2020-03-20 2019-03-06 17:10:25.940 2019-03-07 17:10:21.930
0053 2020-03-20 2019-03-06 17:10:25.940 NULL
0100 2020-03-25 2019-03-04 17:10:32.837 2019-03-05 17:10:29.480
0100 2020-03-25 2019-03-05 17:10:29.480 2019-03-06 17:10:25.940
0100 2020-03-25 2019-03-06 17:10:25.940 2019-03-07 17:10:21.930
0100 2020-03-25 2019-03-06 17:10:25.940 NULL
最佳答案
您需要 lead()
,但不需要子查询:
SELECT RIGHT('000' + CAST(att.property AS VARCHAR(4)), 4) AS property,
CAST(att.stay_date AS DATE) AS stayDate,
CAST(added_timestamp AS DATETIME) AS firstTimeStamp,
LEAD(added_timestamp) OVER (PARTITION BY property, stay_date ORDER BY added_timestamp) AS secondTimeStamp
FROM dbo.tb_rm_portal_attention_days att
WHERE att.revenue_initiative = 'Test'
关于sql - 如何透视下一个 ROW_NUMBER(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55072414/