이게 쿼리로 가능햔가요? 0 3 661

by sm5 [SQL Query] [2020.10.20 20:36:22]


데이타.
A칼럼          B칼럼           C칼럼       D칼럼       금액칼럼
3월             111                666         ㄱㄱ          2만
3월             222                666         ㅈㅈ        1만  
3월             333                666         ㄷㄷ         5만

4월             222               666         ㅈㅈ         2만
4월              425               777          ㅂㅂ         3만
4월              254               777           ㄴㄷ        4만
....



결과.
B         C        C3윌금액  C4월금액         D      D3월금액    D4월금액
111     666       8만           0                ㄱㄱ           2만           1만
222     666       8만            3만             ㅈㅈ         1만           2만
333    666       8만             0                 ㄷㄷ         5만            0
425    777        0              7만                ㅂㅂ        0                3만
254   777         0               7만                ㄴㄷ        0              4만

이런식으로 나와야하는데요.
지금 3일째 해매고 있습니다 ㅜ

폰으로 보시는 분은 가로화면으로 보시면 잘 보입니다

 




 

by pajama [2020.10.20 22:51:30]

제대로 이해한건지 모르겠습니다만..?

with t as (
select '3월' a, 111 b, 666 c, 'ㄱㄱ' d, 20000 e from dual
union all select '3월', 222, 666, 'ㅈㅈ', 10000 from dual
union all select '3월', 333, 666, 'ㄷㄷ', 50000 from dual
union all select '4월', 222, 666, 'ㅈㅈ', 20000 from dual
union all select '4월', 425, 777, 'ㅂㅂ', 30000 from dual
union all select '4월', 254, 777, 'ㄴㄷ', 40000 from dual
)
select b,c,sum(m3_2),sum(m4_2),d, sum(m3_1), sum(m4_1)
from (
select b,
       c,
       d,
       sum(decode(a,'3월',e,0)) over(partition by a,c) m3_2,
       sum(decode(a,'4월',e,0)) over(partition by a,c) m4_2,
       decode(a,'3월',e,0) m3_1,
       decode(a,'4월',e,0) m4_1
from t 
)
group by b,c,d
order by c

 


by 마농 [2020.10.21 08:03:56]
WITH t AS
(
SELECT '3월' a, 111 b, 666 c, 'ㄱㄱ' d, 2 e FROM dual
UNION ALL SELECT '3월', 222, 666, 'ㅈㅈ', 1 FROM dual
UNION ALL SELECT '3월', 333, 666, 'ㄷㄷ', 5 FROM dual
UNION ALL SELECT '4월', 222, 666, 'ㅈㅈ', 2 FROM dual
UNION ALL SELECT '4월', 425, 777, 'ㅂㅂ', 3 FROM dual
UNION ALL SELECT '4월', 254, 777, 'ㄴㄷ', 4 FROM dual
)
SELECT b
     , c
     , SUM(SUM(DECODE(a, '3월', e))) OVER(PARTITION BY c) c3
     , SUM(SUM(DECODE(a, '4월', e))) OVER(PARTITION BY c) c4
     , d
     , SUM(DECODE(a, '3월', e)) d3
     , SUM(DECODE(a, '4월', e)) d4
  FROM t
 WHERE a IN ('3월', '4월')
 GROUP BY c, b, d
;

 


by sm5 [2020.10.21 18:48:59]

감사합니다.

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