원하는 해결 db전체 소스를 불러오면 더 복잡할 꺼 같으니 제가 원하는 바를 예로 말씀 드리겠습니다.
컬럼: 날짜, 스타일코드, 수량
하고자 하는 바는
날짜순으로 정렬된 뒤에 같은 스타일코드 별로 수량들의 소계와 총계를 구하고 싶은데
(다른 날짜에 같은 스타일 코드가 있더라도 별개의 소계가 출력되게끔....)
SELECT 날짜, 스타일코드, SUM(수량)
FROM DUAL
GROUP BY ROLLUP(날짜, 스타일)
ORDER BY 날짜, 스타일코드
이렇게 하면 날짜로만 짤려서 구분되기땜에 소계와 소계사이에 스타일코드 별로 소계는 나오질 않습니다,..ㅜ
1월1일 st01
소계1
1월1일 st02
소계2
1월2일 st11
소계3
1월3일 st21
소계4
1월3일 st01
소계5
총계
위와 같은 형태를 원하는데 제가 예를 든 코딩처럼하면 소계4는 없고 소계5 바로 위에 소계4가 들어가게 됩니다 ㅜ
group by rollup(스타일코드) 이렇게만 줘버리면 날짜별 정렬도 먹히지 않고 날짜별 정렬을 하면 소계가 맨아래에 쭉나열되게 되버립니다..
두줄요약:저는 날짜별+스타일코드 동시에 소계가 나왔으면 하는데 방법이있을까요?
물론 날짜별 정렬은 된 상태에서요..
-- dt, cd 외에 레코드 식별자가 추가되어야 합니다. WITH t AS ( SELECT 1 pk, '20180101' dt, 'st01' cd, 15 v FROM dual UNION ALL SELECT 2, '20180101', 'st01', 5 FROM dual UNION ALL SELECT 3, '20180101', 'st02', 10 FROM dual UNION ALL SELECT 4, '20180102', 'st11', 20 FROM dual UNION ALL SELECT 5, '20180102', 'st11', 20 FROM dual UNION ALL SELECT 6, '20180103', 'st01', 7 FROM dual UNION ALL SELECT 7, '20180103', 'st01', 8 FROM dual UNION ALL SELECT 8, '20180103', 'st21', 10 FROM dual ) SELECT dt , cd , pk , SUM(v) v FROM t GROUP BY ROLLUP(dt, cd, pk) ;
평범한 테이블이 아니구 그리드용 테이블이라 pk가 없었었구여.. rownum은 맨나중 select 문에서 명시적으로 행번호를 매겨주기위해 사용되기땜에 pk컬럼 대용으로 쓰긴 어려웠습니다.. rowid로 사용하려면 전 서브쿼리에서 등록을해서 써야되는데 그렇게되면 제가원하는 정렬을 구현할수없었구요.. ㅜ 아무튼 이래저래 제가 처음부터 만든 쿼리문은 아니였고 만들어진 형식 내에서 최소한 뜯어고치면서 구현을 해야했기땜에 제 기준에 맞는 컬럼을 문자형태로 두개 합쳐서 pk용으로 하나 만들어서 구현해보니 제가 원하는 결과가 출력됬습니다! 다 마농님 덕분이에요 감사합니다 좋은 저녁시간 되세요^.^