시작일과 종료일을 입력 받아 시작일과 종료일의 사이의 날짜를 모두 임시테이블에 출력하고
임시테이블에 있는 날짜들을 COUNT값과 행렬 변환을 할려고 하고있습니다.
피벗 말고 다른 방법으로 행렬 변화를 주고싶은데
커서와 update 를 사용하는 방법을 알고있으신분 있나요?
원본 코드
@START_DAY DATE,
@END_DAY DATE
AS
IF OBJECT_ID ('econnetUX..#JH_TEMP') IS NULL
BEGIN
CREATE TABLE #JH_TEMP
(
DAY_TEMP DATE,
NUM INT IDENTITY (1,1)
)
END
-----------------------------임시테이블이 존재하지 않을경우 임시테이블 생성-------------------------------
DECLARE @DIFF INT
DECLARE @COUNT INT
SET @COUNT = 0
SET @DIFF = (SELECT DATEDIFF(DAY, @START_DAY, @END_DAY) AS DAYDIFF)
---------------------입력 받은 @START_DAY 와 @END_DAY를 통해 @DIFF 계산-----------------------------------
IF NOT EXISTS(SELECT IN_DAY FROM JH_DAY WHERE IN_DAY = @START_DAY)
BEGIN
INSERT INTO JH_DAY(IN_DAY) VALUES(@START_DAY)
END
----------------------입력 받은 @START_DAY 값이 존재하지 않으면 JH_DAY 입력---------------------------------
DECLARE DAY_CURSOR CURSOR --커서 선언
FOR
SELECT @START_DAY FROM JH_DAY --정보를 가지고올 테이블
OPEN DAY_CURSOR -- 커서오픈
FETCH NEXT FROM DAY_CURSOR INTO @START_DAY
WHILE @@FETCH_STATUS = 0
BEGIN
WHILE(@COUNT <=@DIFF)
BEGIN
INSERT INTO #JH_TEMP(DAY_TEMP) VALUES (@START_DAY)
SET @START_DAY = (SELECT DATEADD(DAY,1,@START_DAY))
SET @COUNT +=1
END
FETCH NEXT FROM DAY_CURSOR INTO @START_DAY
END
CLOSE DAY_CURSOR
DEALLOCATE DAY_CURSOR
SELECT * FROM #JH_TEMP