/
관리 데이터 입니다
창고 테이블 | 관리자(일자별,오전/오후, 창고) | ||||
창고1 | 2023-03-01 | 오전 | 홍길동 | 창고2 | |
창고2 | 오후 | 김길동 | 창고1 | ||
창고3 | 2023-03-02 | 오전 | 이길동 | 창고2 | |
창고4 | 오후 | 김길동 | 창고5 | ||
창고5 | 2023-03-03 | 오전 | 이길동 | 창고1 | |
오후 | 김길동 | 창고3 | |||
2023-03-04 | 오전 | 홍길동 | 창고2 | ||
오후 | 전길동 | 창고5 | |||
2023-03-05 | 오전 | 홍길동 | 창고2 | ||
오후 | 김길동 | 창고5 |
조회
2023-03-01 | 2023-03-02 | 2023-03-03 | 2023-03-04 | 2023-03-05… | ||||||
오전 | 오후 | 오전 | 오후 | 오전 | 오후 | 오전 | 오후 | 오전 | 오후 | |
창고1 | 김길동 | 이길동 | ||||||||
창고2 | 홍길동 | 이길동 | 홍길동 | 홍길동 | ||||||
창고3 | 김길동 | |||||||||
창고4 | ||||||||||
창고5 | 김길동 | 전길동 | 김길동 |
창고별 일자(시작일자~종료일자 조건 ,최대 30일)으로 하고 싶은데
고수님들 부탁드립니다
기간이 가변이라면 SQL 만으로는 어렵습니다. 동적 SQL 쓰셔야 합니다.
기간이 한달 고정이라면? 1~31일까지 고정으로 표현하면 될 듯 합니다.
창고가 고정이라면? 행과 열을 바꾸어 표현하는 방안도 있습니다.
1 2 3 4 5 6 7 8 9 10 11 | SELECT 창고 , COUNT (DECODE(일자, '2023-03-01' , 1)) "2023-03-01" , COUNT (DECODE(일자, '2023-03-02' , 1)) "2023-03-02" , COUNT (DECODE(일자, '2023-03-03' , 1)) "2023-03-03" , COUNT (DECODE(일자, '2023-03-04' , 1)) "2023-03-04" , COUNT (DECODE(일자, '2023-03-05' , 1)) "2023-03-05" FROM t WHERE 일자 >= '2023-03-01' AND 일자 <= '2023-03-05' GROUP BY 창고 ; |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | WITH t AS ( SELECT '2023-03-01' dt, '오전' am, '홍길동' nm, '창고2' st FROM dual UNION ALL SELECT '2023-03-01' , '오후' , '김길동' , '창고1' FROM dual UNION ALL SELECT '2023-03-02' , '오전' , '이길동' , '창고2' FROM dual UNION ALL SELECT '2023-03-02' , '오후' , '김길동' , '창고5' FROM dual UNION ALL SELECT '2023-03-03' , '오전' , '이길동' , '창고1' FROM dual UNION ALL SELECT '2023-03-03' , '오후' , '김길동' , '창고3' FROM dual UNION ALL SELECT '2023-03-04' , '오전' , '홍길동' , '창고2' FROM dual UNION ALL SELECT '2023-03-04' , '오후' , '전길동' , '창고5' FROM dual UNION ALL SELECT '2023-03-05' , '오전' , '홍길동' , '창고2' FROM dual UNION ALL SELECT '2023-03-05' , '오후' , '김길동' , '창고5' FROM dual ) SELECT * FROM ( SELECT dt, am, nm, st FROM t WHERE dt >= '2023-03-01' AND dt <= '2023-03-05' ) PIVOT ( MIN (nm) FOR (dt, am) IN ( ( '2023-03-01' , '오전' ) "2023-03-01 오전" , ( '2023-03-01' , '오후' ) "2023-03-01 오후" , ( '2023-03-02' , '오전' ) "2023-03-02 오전" , ( '2023-03-02' , '오후' ) "2023-03-02 오후" , ( '2023-03-03' , '오전' ) "2023-03-03 오전" , ( '2023-03-03' , '오후' ) "2023-03-03 오후" , ( '2023-03-04' , '오전' ) "2023-03-04 오전" , ( '2023-03-04' , '오후' ) "2023-03-04 오후" , ( '2023-03-05' , '오전' ) "2023-03-05 오전" , ( '2023-03-05' , '오후' ) "2023-03-05 오후" ) ) ORDER BY st ; |