[SQL] 오라클 SQL 피벗 쿼리
SQL오라클 SQL 피벗 쿼리
아래와 같이 나는 테이블에 데이터가 :
MONTH VALUE
1 100
2 200
3 300
4 400
5 500
6 600
그 결과는 다음과 같이 주어진다 그래서 나는 SQL 쿼리를 작성하려면 :
MONTH_JAN MONTH_FEB MONTH_MAR MONTH_APR MONTH_MAY MONTH_JUN
100 200 300 400 500 600
해결법
-
==============================
1.
SELECT SUM(CASE WHEN t.month = 1 THEN t.value ELSE 0 END) AS JAN, SUM(CASE WHEN t.month = 2 THEN t.value ELSE 0 END) AS FEB, SUM(CASE WHEN t.month = 3 THEN t.value ELSE 0 END) AS MAR, SUM(CASE WHEN t.month = 4 THEN t.value ELSE 0 END) AS APR, SUM(CASE WHEN t.month = 5 THEN t.value ELSE 0 END) AS MAY, SUM(CASE WHEN t.month = 6 THEN t.value ELSE 0 END) AS JUN FROM YOUR_TABLE t
당신은 두 개의 열을 표시 -이 같은 아마 올해로 그룹화해야합니다.
이 ANSI PIVOT (및 UNPIVOT) 구문은, 그러나 오라클은 11g까지를 지원하지 않았다. 이전 9i에, 당신은 오라클 특정의 DECODE와 CASE 문을 교체해야 할 것입니다.
-
==============================
2.오라클 11g로, 이제 그 결과를 달성하기 위해 PIVOT 연산자를 사용할 수 있습니다 :
오라클 11g로, 이제 그 결과를 달성하기 위해 PIVOT 연산자를 사용할 수 있습니다 :
create table tq84_pivot ( month number, value number ); insert into tq84_pivot values(1, 100); insert into tq84_pivot values(2, 200); insert into tq84_pivot values(3, 300); insert into tq84_pivot values(4, 400); insert into tq84_pivot values(5, 500); insert into tq84_pivot values(6, 600); -- insert into tq84_pivot values(1, 400); insert into tq84_pivot values(2, 350); insert into tq84_pivot values(4, 150); select * from tq84_pivot pivot ( sum (value) as sum_value for (month) in (1 as month_jan, 2 as month_feb, 3 as month_mar, 4 as month_apr, 5 as month_mai, 6 as month_jun, 7 as month_jul, 8 as month_aug, 9 as month_sep, 10 as month_oct, 11 as month_nov, 12 as month_dec) );
from https://stackoverflow.com/questions/4841718/oracle-sql-pivot-query by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 열 값을 기준으로 선택 출력 값 - 문 'SELECT'을의 'IF' (0) | 2020.03.10 |
---|---|
[SQL] 자동 증분 테이블 열 (0) | 2020.03.10 |
[SQL] INNER은 SQL에 가입 대 CROSS는 가입 (0) | 2020.03.10 |
[SQL] "LIKE"및 SQL의 "IN"의 조합이 있습니까? (0) | 2020.03.10 |
[SQL] 내가 사용해야! = 또는 <> T-SQL에서 동일하지 하시나요? (0) | 2020.03.10 |