MSSQL 쿼리 질문좀 드리겠습니다! 0 1 363

by SQL초급자 [SQL Query] MSSQL MS-SQL 쿼리 순번 [2022.02.17 21:15:19]



첨부된 사진처럼 쿼리로 할 수 있는 방법이 있을까요??

테이블은 DATA_TEMP 이며 UPDT_DT ASC 기준으로 같은 번호별 순서를 하고싶은데 Whlie문으로는 가능한걸 확인했습니다.

하지만 Whlie문으로 진행하게되면 10,000 줄 이상 진행하게 되면 너무 시간이 오래걸려서 쿼리로 할 수 있는 방법을 찾고 싶습니다!

by 뉴비디비 [2022.02.18 00:39:39]
WITH DATA_TEMP AS (
	SELECT 1 CB_FLAG, 1 UPDT_DT UNION ALL
	SELECT 1 CB_FLAG, 2 UPDT_DT UNION ALL
	SELECT 0 CB_FLAG, 3 UPDT_DT UNION ALL
	SELECT 0 CB_FLAG, 4 UPDT_DT UNION ALL
	SELECT 1 CB_FLAG, 5 UPDT_DT UNION ALL
	SELECT 1 CB_FLAG, 6 UPDT_DT UNION ALL
	SELECT 1 CB_FLAG, 7 UPDT_DT UNION ALL
	SELECT 1 CB_FLAG, 8 UPDT_DT UNION ALL
	SELECT 0 CB_FLAG, 9 UPDT_DT UNION ALL
	SELECT 1 CB_FLAG, 10 UPDT_DT UNION ALL
	SELECT 1 CB_FLAG, 11 UPDT_DT UNION ALL
	SELECT 1 CB_FLAG, 12 UPDT_DT 
)
SELECT 
	SUM(COLS) OVER (ORDER BY UPDT_DT) AS NEW_COLS
	, CB_FLAG
	, UPDT_DT
FROM (
	SELECT
		CB_FLAG
		, UPDT_DT
		, CASE WHEN LAG(CB_FLAG) OVER (ORDER BY UPDT_DT) = CB_FLAG THEN 0 ELSE 1 END COLS
	FROM DATA_TEMP
) BB
ORDER BY UPDT_DT

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입