안녕하세요
100여개의 데이타가 들어있는 테이블에서 특정 컬럼 합계를 구하려고 합니다.
웹으로 출력을 해야 하는데요. 문제는 웹에서 보여줄 컬럼이 너무 많습니다.
SELECT안에 있는건 기본적으로 다 보여줘야 합니다.
합계를 낼 컬럼은 원산지입니다.
아래처럼 보여줘야할 컬럼이 많을경우 Group By Rollup 과 그룹핑을 이용해 하려했더니
1700여개가 나와서 잘안되네요.
이렇게 Group By 할 컬럼이 많을경우
롤업이 안된다면 생각해놓은 방법이
1.DB에서 커서 돌려가면서 데이타 합계 Row를 추가해서 select하던지
2.페이지에서 기본데이타 뿌려준후 원산지 가 바뀔경우 합계 Tr을 껴넣어야 하는 이런방법은 생각해뒀습니다.
미숙한 질문이지만 좋은 방법 있으면 가르침 부탁드립니다.
년도 | 원산지 | 생산자 | 생산자코드 | 상품코드 | 상품명 | 판매량 | 단가 | 지급액 |
|
2015 | 서울 | 홍길동 | 1 | A | 감자 | 10 | 100 | 1000 |
|
2015 | 서울 | 임꺾정 | 2 | B | 오이 | 5 | 100 | 500 |
|
합계 | 1500 |
| |||||||
2015 | 인천 | 수지 | 3 | C | 가지 | 20 | 200 | 4000 |
|
합계 |
|
|
|
|
|
|
| 4000 |
|
SELECT
년도
,원산지
,생산자
,생산자코드
,상품코드
,상품명
,판매량
,단가
,판매수
, ..
, ..
, ..
, ..
,지급액
FROM 테이블
Gropup By Rollup(컬럼들)
Comment 2
-
건우아빠
2015.02.11 23:14
-
이시우_301202
2015.02.12 08:50
아 정말 감사합니다. ^^
Rollup 보다는 GROUPING SETS 을 쓰,시는게 부분합을 제어 하시는데 용이 합니다.
with res as (
select '2015' 년도 , '서울' 원산지 , '1' 생산자코드 , 'A' 상품코드 , '감자' 상품명 , 10 판매량 , 100 단가 , 1000 지급액 union all
select '2015' 년도 , '서울' 원산지 , '2' 생산자코드 , 'B' 상품코드 , '오이' 상품명 , 5 판매량 , 100 단가 , 500 지급액 union all
select '2015' 년도 , '인천' 원산지 , '3' 생산자코드 , 'B' 상품코드 , '가지' 상품명 , 20 판매량 , 200 단가 , 4000 지급액 )
select 년도, 원산지,생산자코드,상품코드, 상품명 , 판매량 , 단가
, SUM(지급액) 판매량
from res
GROUP BY GROUPING SETS ( (년도, 원산지,생산자코드,상품코드, 상품명 , 판매량 , 단가) -- 그룹 잡을 전체 컬럼을 기술
, (년도,원산지) -- 부분합할 내용
, (년도) -- 부분합할 내용
, () -- 전체합
-- , (원산지,생산자코드)
-- , (상품코드,상품명)
)