(조금 더 추가되었습니다. 컬럼seq )
1.하기처럼 sale_dt가 동일하며 수량도 동일한경우에는 한줄로 수량이 합쳐져 나오게,
2.sale_dt도 동일하며 수량도 동일한경우도 한줄로 합쳐져 나오게,
3.하나의 Item에 Sale_dt가 각각 다르고 수량도 다른경우 sale_dt가 Min은 냅두고 Max날짜에 QTY가 합쳐지게
4.그리고 3개가잇는데 2개는같고 1개가 다른경우는 같은 한개에 합치게 하려는데 잘안되서 질문 다시 남김니다.
WITH T ( ITEM ,seq, SALE_DT , BUY_DT , QTY ) AS (
SELECT '자몽' , '1', '2019-01-03' , '2019-01-01' , 100 FROM DUAL UNION ALL
SELECT '자몽' , '2', '2019-01-03' , '2019-01-01' , 200 FROM DUAL UNION ALL
SELECT '자몽' , '3', '2019-01-06' , '2019-01-01' , 300 FROM DUAL UNION ALL
SELECT '포도' , '1', '2019-01-03' , '2019-01-01' , 100 FROM DUAL UNION ALL
SELECT '포도' , '2', '2019-01-05' , '2019-01-01' , 200 FROM DUAL UNION ALL
SELECT '포도' , '3', '2019-01-06' , '2019-01-01' , 300 FROM DUAL UNION ALL
SELECT '사과' , '1', '2019-01-03' , '2019-01-01' , 100 FROM DUAL UNION ALL
SELECT '사과' , '2', '2019-01-03' , '2019-01-01' , 200 FROM DUAL UNION ALL
SELECT '사과' , '3','2019-01-03' , '2019-01-01' , 300 FROM DUAL
)
SELECT ITEM , max(seq) seq, MAX(SALE_DT) SALE_DT , max(BUY_DT) BUY_DT , SUM(QTY) QTY
FROM
(
SELECT ITEM ,seq, SALE_DT , BUY_DT , QTY, ROW_NUMBER() OVER(PARTITION BY ITEM ORDER BY SALE_DT ) RN
FROM T
)
GROUP BY ITEM , DECODE(RN,1,2)
order by item, sale_dt, seq
WITH T ( ITEM , SALE_DT , BUY_DT , QTY ) AS ( SELECT '사과' , '2019-01-01' , '2019-01-01' , 100 FROM DUAL UNION ALL SELECT '사과' , '2019-01-02' , '2019-01-01' , 200 FROM DUAL UNION ALL SELECT '사과' , '2019-01-03' , '2019-01-01' , 300 FROM DUAL ) SELECT ITEM , MAX(SALE_DT) SALE_DT , MAX(BUY_DT) BUY_DT , SUM(QTY) QTY FROM ( SELECT ITEM , SALE_DT , BUY_DT , QTY , ROW_NUMBER() OVER(PARTITION BY ITEM ORDER BY SALE_DT ) RN FROM T ) GROUP BY ITEM , DECODE(RN,1,2)
추가질문이있습니다.
(조금 더 추가되었습니다. 컬럼seq )
하기처럼 sale_dt가 동일하며 수량도 동일한경우에는 한줄로 수량이 합쳐져 나오게,
sale_dt도 동일하며 수량도 동일한경우도 한줄로 합쳐져 나오게,
그리고 3개가잇는데 2개는같고 1개가 다른경우는 같은 한개에 합치게 하려는데 잘안되서 질문 다시 남김니다.
WITH T ( ITEM ,seq, SALE_DT , BUY_DT , QTY ) AS (
SELECT '자몽' , '1', '2019-01-03' , '2019-01-01' , 100 FROM DUAL UNION ALL
SELECT '자몽' , '2', '2019-01-03' , '2019-01-01' , 200 FROM DUAL UNION ALL
SELECT '자몽' , '3', '2019-01-06' , '2019-01-01' , 300 FROM DUAL UNION ALL
SELECT '포도' , '1', '2019-01-03' , '2019-01-01' , 100 FROM DUAL UNION ALL
SELECT '포도' , '2', '2019-01-05' , '2019-01-01' , 200 FROM DUAL UNION ALL
SELECT '포도' , '3', '2019-01-06' , '2019-01-01' , 300 FROM DUAL UNION ALL
SELECT '사과' , '1', '2019-01-03' , '2019-01-01' , 100 FROM DUAL UNION ALL
SELECT '사과' , '2', '2019-01-03' , '2019-01-01' , 200 FROM DUAL UNION ALL
SELECT '사과' , '3','2019-01-03' , '2019-01-01' , 300 FROM DUAL
)
SELECT ITEM , max(seq) seq, MAX(SALE_DT) SALE_DT , max(BUY_DT) BUY_DT , SUM(QTY) QTY
FROM
(
SELECT ITEM ,seq, SALE_DT , BUY_DT , QTY, ROW_NUMBER() OVER(PARTITION BY ITEM ORDER BY SALE_DT ) RN
FROM T
)
GROUP BY ITEM , DECODE(RN,1,2)
order by item, sale_dt, seq
원본
ITEM | SALE_DT | BUY_DT | QTY |
사과 | 2019-01-01 | 2019-01-01 | 100 |
사과 | 2019-01-02 | 2019-01-01 | 200 |
사과 | 2019-01-03 | 2019-01-01 | 300 |
결과 | |||
ITEM | SALE_DT | BUY_DT | QTY |
사과 | 2019-01-01 | 2019-01-01 | 100 |
사과 | 2019-01-03 | 2019-01-01 | 500 |
추가질문
ITEM | SEQ | SALE_DT | BUY_DT | QTY |
사과 | 1 | 2019-01-01 | 2019-01-01 | 100 |
사과 | 2 | 2019-01-02 | 2019-01-01 | 200 |
사과 | 3 | 2019-01-03 | 2019-01-01 | 300 |
포도 | 1 | 2019-01-01 | 2019-01-01 | 100 |
포도 | 2 | 2019-02-01 | 2019-01-01 | 200 |
포도 | 3 | 2019-04-01 | 2019-01-01 | 300 |
자몽 | 1 | 2019-01-01 | 2019-01-01 | 100 |
자몽 | 2 | 2019-01-01 | 2019-01-01 | 200 |
자몽 | 3 | 2019-01-01 | 2019-01-01 | 300 |
감자 | 1 | 2019-01-01 | 2019-01-01 | 100 |
감자 | 2 | 2019-02-01 | 2019-01-01 | 200 |
감자 | 3 | 2019-03-01 | 2019-01-01 | 300 |
감자 | 4 | 2019-04-01 | 2019-01-01 | 400 |
결과표 | ||||
ITEM | SEQ | SALE_DT | BUY_DT | QTY |
사과 | 1 | 2019-01-01 | 2019-01-01 | 100 |
사과 | 3 | 2019-01-03 | 2019-01-01 | 500 |
포도 | 1 | 2019-01-01 | 2019-01-01 | 100 |
포도 | 3 | 2019-04-01 | 2019-01-01 | 500 |
자몽 | 1 | 2019-01-01 | 2019-01-01 | 600 |
감자 | 1 | 2019-01-01 | 2019-01-01 | 100 |
감자 | 3 | 2019-03-01 | 2019-01-01 | 500 |
감자 | 4 | 2019-04-01 | 2019-01-01 |
400 |
결과표입니다.
처음 질문은 SALE_DT가 다르면 MIN(SALE_DT) 는 그대로 보여주고 MAX(SALE_DT)에 QTY를 더하는 질문이였습니다.
두번째는
1.SALE_DT가 동일하고 수량도 동일한 경우 ROW 수가 한 줄로 수량이 합하여 나오기
2.SALE_DT가 2개는 동일하고 하나만 다른경우 SALE_DT가 같은곳에 SUM(QT)하고 다른하나는 그대로 보여지게
3.SALE_DT가 예) 1/1, 2/1, 3/1, 4/1일때 1/1은 그대로 2/1, 3/1은 합쳐지도록, 4/1은 그대로 보여지게 입니다.