首页 > 解决方案 > 如何在选择查询中获取组的先前记录日期

问题描述

我需要Prevdate在不使用 CTE 或临时表的情况下计算如下所示的值。我尝试使用仅适用于上面一行的铅。此外,每组的记录数可能会有所不同。任何人都可以在这里提出解决方案吗?

以下是样本数据:

create table #Sampledata 
(
id int
,groupno int
,Date date
)
insert into #Sampledata values (
1,1,'1/2/2020'),
(2,2,'1/13/2020'),
(3,2,'1/13/2020'),
(4,2,'1/13/2020'),
(5,3,'1/24/2020')

以下是预期的输出:

在此处输入图像描述

标签: sqlsql-servermsbi

解决方案


仅当继续使用 groupno 时,尝试加入一个减少的此工作。

select distinct s1.* , s2.PrevDate
from #Sampledata as s1
left join (
select groupno - 1 as num , [Date] as PrevDate
from #Sampledata 
) as s2 on s1.groupno = s2.num

编辑:我造成了笛卡尔爆炸,所以我只是在那里撞了一个不同的东西来解决它

在此处输入图像描述


推荐阅读