데이터베이스 개발자 질문과 답변 게시판
시작일과 종료일을 입력 받아 시작일과 종료일의 사이의 날짜를 모두 임시테이블에 출력하고
임시테이블에 있는 날짜들을 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