아래는 샘플로 만들어본 테이블인데, 상품 금액 그리고 날짜로 이루어져있다.
↓ 위 테이블을 결론적으로 아래와 같이 나타내고자 한다 (월별 상품 금액 합계)
PIVOT을 이용해서 각 상품의 합계를 월별로 집계한 것이다.
먼저, 첫번째 SAMPLE_TABLE에서 날짜를 월로 바꾸는 SQL을 만들었다.
SELECT 상품, 금액, SUBSTRING(CONVERT(CHAR(16), 날짜, 120), 1, 7) 년월
FROM SAMPLE_TABLE
위 SQL을 실행하여 나온 테이블이다. 여기서 년월 행을 열로 바꿔주는 PIVOT을 사용할 것이다.
중복되는 값이 있는 경우 하나의 열로 만들어주어야 하기 때문에 집계 기준이 필요하다.
예를들어, 위 테이블에서 5번줄과 6번줄은 B 상품이 2022-02에 두번 등장한다.
나는 각 상품 금액의 합을 구하기 위해 아래와 같이 SQL을 만들었다.
SELECT *
FROM 테이블명
PIVOT ( 함수(컬럼명) FOR 각 열로 만들어줄컬럼 IN ([각 컬럼이름이 될 값]) ) AS PVT(테이블명)
↓ (DATE 타입을 YYYY-MM 형식으로 변경한 쿼리를 FROM 절의 서브쿼리로 넣어서 위와 같이 작성했다.)
위 상태에서 2022-01 숫자로 되어있는 컬럼명칭을 2022년 1월로 바꾸고, NULL 값은 0으로 되게 처리했다.
↓
처음에 만들고자 했던 결과를 완성했다.
mariadb 삭제-설치-시작-디비생성-유저생성 순서. (2) | 2024.10.24 |
---|---|
[MSSQL] 여러 행 값을 하나의 행에 나열하는 방법 (0) | 2022.03.16 |