Common Table Expression (CTE)
Oracle 의 Subquery Factoring 기능을 MS SQL 은 2005 버전부터 Common Table Expression (CTE) 이라는 이름으로 기능을 제공하기 시작했습니다.
아래 쿼리는 https://database.sarang.net 사이트에서 발췌했습니다.
WITH MYCAL AS ( SELECT CAST('1900-01-01' AS DATETIME) DT , IDX = 1 UNION ALL SELECT DT + 1 , IDX + 1 FROM MYCAL WHERE DT + 1 <= '2050-12-31' ) SELECT IDX , [DT] , [DT_1] = DATEADD(DD, -1, DT) , [YMD] = CONVERT(CHAR(8), DT, 112) , [YY] = DATEPART(YEAR, DT) , [MM] = DATEPART(MONTH, DT) , [DD] = DATEPART(DAY, DT) , [WKDAY_SEQ] = DATEPART(DW, DT) , [QTR] = DATEPART(QQ, DT) , [ANIMAL] = CASE DATEPART(YEAR, DT) % 12 - 3 WHEN 1 THEN '자' WHEN 2 THEN '축' WHEN 3 THEN '인' WHEN 4 THEN '묘' WHEN 5 THEN '진' WHEN 6 THEN '사' WHEN 7 THEN '오' WHEN 8 THEN '미' WHEN 9 THEN '신' WHEN 10 THEN '유' WHEN 11 THEN '술' WHEN 12 THEN '해' END FROM MYCAL OPTION (MAXRECURSION 0)
이 쿼리를 MS SQL 에서 돌려보시기 바랍니다.
위 기능을 아래와 같이 사용할 수 있겠지요.
WITH MYCAL AS ( SELECT CAST('37001' AS int) DT , IDX = 1 UNION ALL SELECT DT + 1 , IDX + 1 FROM MYCAL WHERE DT + 1 <= '87100' ) INSERT INTO INSERTTEST SELECT IDX, DT, cast(IDX as varchar) + '_' + cast(DT as varchar) IDVALUE FROM MYCAL OPTION (MAXRECURSION 0)
행복한 고수되십시오.
WooGong ))*
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
출처: https://www.jumptovb.net/?page=194 [Jump To VB.NET:티스토리]