如何查詢出連續日期記錄

2021-09-08 21:31:10 字數 1506 閱讀 8723

》,截圖如下:

insus.net嘗試寫了程式並做了測試,可以得到預期的結果,sql**可參考和學習之用。

--建立乙個臨時表,將會儲存連續日期的記錄

create

table

#temp

(idd 

varchar(10

),sdate 

datetime

)declare

@sddatetime

--開始日期

declare

@eddatetime

--結束日期

--在記錄中,找出開始與結束日期

select

@sd=

min(

[sdate

]), 

@ed=

max(

[sdate]) 

from[tt

]declare

@nint=0

--宣告乙個變數,儲存累記錄數

--迴圈日期

while

(@sd

<=

@ed)

begin

--如果存在

ifexists

(select

top1

1from[tt

]where

[sdate]=

@sd)

begin

set@sd

=dateadd

(day,1

,@sd

) --

日期加1天                

set@n=@n

+1--記錄加1

endelse

--如果不存在

beginif(

@n>=3) 

--判斷是否大於或等於3            

insert

into

#temp

select

[idd],

[sdate

]from[tt

]where

[sdate

]between

dateadd

(day,-

@n,@sd) 

and@sd

--日期加1天                            

set@sd

=dateadd

(day,1

,@sd

)set@n=

0--初始化為0                

endend

--列出符合條件的記錄

select

*from

#temp

上面的方法,實際可以把if(@n

>=

3)這句中的3改為乙個變數,這樣可以方便以後的程式擴充套件,某一天需要改為連續2天,4天,5天,或任何一天。

SQL查詢出任意連續日期或時間

查詢一年十二個月 select case when length mon 1 then concat 0 mon else mon end months from select m m 1 mon from 表名稱隨便,select m 0 a aa limit 12 查詢出一天二十四小時 sele...

可能存在斷點,查詢出連續的記錄來

在itpub上有一則非常巧妙的 sql技巧,學習一下,記錄在這裡。最初的問題是這樣的 我有乙個表結構,fphm,kshm 2014,00000001 2014,00000002 2014,00000003 2014,00000004 2014,00000005 2014,00000007 2014,...

SQL 連續記錄查詢

1 題目要求輸出的時連續三行的記錄,則可以選擇三張單錶進行自關聯,連線的要求即為id序號的遞增。連線方式為left join 如下圖即為無要求時的連線語句及結果 有圖可知,連線的每一行的 id 時從s1 到s2遞增1,再到s3遞增1。再因為連線的每一行即為代表連續的三行的記錄。根據題目要求,則要求p...