SQL依日期分组并具有多个相同结果

问题描述 投票:0回答:1

如何编写按日期对数据进行分组但在首次更改数据时显示的语句

日期-数据更改时

a,b,c-一些数据,它可以是任何东西

date,a,b,c
04/26/2008,1,1,1
04/25/2008,1,2,1
04/24/2008,1,1,1
04/23/2008,1,1,1
04/22/2008,1,1,1
04/21/2008,2,2,2
04/20/2008,1,1,1

这应该是结果。它可能在不同的日期具有相同的数据,但是在第二天数据保持不变时会丢失。

04/26/2008,1,1,1
04/25/2008,1,2,1
04/22/2008,1,1,1
04/21/2008,2,2,2
04/20/2008,1,1,1

它应在MS SQL Server 2008 r2上工作

sql sql-server tsql sql-server-2008-r2 gaps-and-islands
1个回答
0
投票

这就像一个间隙和孤岛问题

; with cte as 
(
select date, a,b,c,combinedstring=cast(a as varchar(max))+ cast(b as varchar(max)+ cast(c as varchar(max))
from yourtablename 
)

; with cte2 as 
(select *,
rn1=row_number() over (partition by combinedstring order by date asc)
,rn2= row_number() over (order by date asc) 
from cte
)
select y.* 
from 
(
select date=max(date)
from cte2
group by (rn2-rn1)) t
join yourtablename y
on t.date=y.date
© www.soinside.com 2019 - 2024. All rights reserved.