![]() |
위의 테이블에서 USE_YYMM 컬럼을 가변될 기준으로 하여
USE_TYPE 별로 합계 구하는 쿼리 예시.
-- 임시 테이블 생성
CREATE TABLE #MONEY_HISTORY(
USE_TYPE NVARCHAR(10) NOT NULL,
USE_YYMM NVARCHAR(10) NOT NULL,
AMT INT NOT NULL
)
INSERT INTO #MONEY_HISTORY VALUES ('외식', '2022년 7월', 12000)
INSERT INTO #MONEY_HISTORY VALUES ('외식', '2022년 7월', 10000)
INSERT INTO #MONEY_HISTORY VALUES ('외식', '2022년 7월', 7000)
INSERT INTO #MONEY_HISTORY VALUES ('공과금', '2022년 7월', 30000)
INSERT INTO #MONEY_HISTORY VALUES ('외식', '2022년 8월', 11000)
INSERT INTO #MONEY_HISTORY VALUES ('생필품', '2022년 8월', 25000)
INSERT INTO #MONEY_HISTORY VALUES ('생필품', '2022년 8월', 50000)
INSERT INTO #MONEY_HISTORY VALUES ('공과금', '2022년 8월', 30000)
INSERT INTO #MONEY_HISTORY VALUES ('외식', '2022년 9월', 6000)
INSERT INTO #MONEY_HISTORY VALUES ('외식', '2022년 9월', 8000)
INSERT INTO #MONEY_HISTORY VALUES ('생필품', '2022년 9월', 10000)
INSERT INTO #MONEY_HISTORY VALUES ('공과금', '2022년 9월', 30000)
-- 가변될 기준 컬럼 ---------------------
SELECT DISTINCT USE_YYMM
INTO #YYMM
FROM #MONEY_HISTORY
-- SQL 생성 -----------------------------
DECLARE @SQL VARCHAR(MAX)
SELECT @SQL = 'SELECT USE_TYPE'
SELECT @SQL = @SQL + ', SUM(CASE WHEN USE_YYMM = ''' + USE_YYMM + '''' +
' THEN AMT ELSE 0.00 END ) AS ''' + USE_YYMM +''''
FROM #YYMM
SELECT @SQL = @SQL +
'FROM #MONEY_HISTORY
GROUP BY USE_TYPE
ORDER BY USE_TYPE'
EXEC (@SQL) -- 가변 컬럼으로 조회
-- 임시 테이블 삭제 ---------------------
-- DROP TABLE #YYMM, #MONEY_HISTORY
실행 결과
![]() |
'DataBase > MSSQL' 카테고리의 다른 글
[MSSQL] 조건에 따라 WHERE절 조건 바꾸기, 1=1 활용 (0) | 2022.09.21 |
---|---|
[MSSQL] ISNULL로 Empty, Null 체크 예시 (0) | 2022.09.21 |
[MSSQL] 이중 커서/중첩 커서(Nested Cursor)로 반복처리 예시 (0) | 2022.09.04 |
[MSSQL] 특정문자 포함여부에 따라 다른 값 출력(IF, CASE) (0) | 2022.04.29 |
[MSSQL] 컬럼 합치기 STUFF + FOR XML PATH (0) | 2022.04.25 |