sqlserver 에서 연속 날짜 기록 코드 를 어떻게 조회 합 니까?

포럼 에서 한 글 을 보 았 는데,캡 처 는 다음 과 같다.
Insus.NET 은 프로그램 을 작성 하고 테스트 를 시 도 했 습 니 다.예상 한 결 과 를 얻 을 수 있 고 SQL 코드 는 참고 하고 학습 할 수 있 습 니 다
 
-- ,
CREATE TABLE #temp (IDD VARCHAR(10),SDATE DATETIME)
DECLARE @sD DATETIME --
DECLARE @eD DATETIME --
-- ,
SELECT @sD = MIN([SDATE]), @eD = MAX([SDATE]) FROM [TT]
DECLARE @N INT = 0 -- ,
--
WHILE (@sD <= @eD)
BEGIN
--
IF EXISTS (SELECT TOP 1 1 FROM [TT] WHERE [SDATE] = @sD)
BEGIN
SET @sD = DATEADD(day,1,@sD) -- 1
SET @N = @N + 1 -- 1
END
ELSE --
BEGIN
IF (@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
END
END
--
SELECT * FROM #temp
위의 방법 은 실제 적 으로 IF(@N>=3)라 는 문장의 3 을 하나의 변수 로 바 꿀 수 있 습 니 다.그러면 앞으로 의 프로그램 확장 을 편리 하 게 할 수 있 습 니 다.어느 날 은 2 일,4 일,5 일 또는 그 어떠한 날 로 바 꿔 야 합 니 다.

좋은 웹페이지 즐겨찾기