나는 이것을 할 수있는 방법이 있다고 믿는다. 그러나 나는 다른 많은 사람들만큼 오라클 10g에 익숙하지 않다. 시나리오는 다음과 같습니다.ORACLE SQL : 하나의 문장에서 CODE에 종속적 인 여러 SUMS
현재 ASP.net 2.0으로 기본 ASP 페이지를 변환하고 있습니다. 보고서를 만드는 쿼리가 있습니다. 판매 대 이전 판매를보고합니다. 현재 하나의 검색어가 데이터베이스로 이동하여 Google 제품을 판매하는 위치의 전체 목록을 가져 오는 중입니다. 그런 다음 위치의 모든 단일 행을 반복하고 SQL에서 일부 합계 연산을 실행합니다.
다른 테이블로 이동하여 판매 수량을 합한 다음 테이블 행에 합계를 추가합니다. 위치 쿼리가 많은 결과를 반환하기 때문에 쿼리에 2-3 분이 걸립니다.
제 질문은이 모든 것을 하나의 쿼리로 통합하는 방법입니다.
LOCATIONS 질의 :
SELECT DISTINCT t.location,
l.city,
f.year,
f.customer FROM loc t,
location l, father_table f
WHERE f.number = t.number(+)
AND f.code = '0001'
AND f.c_code = '01'
AND t.location= l.code(+)
AND t.code IN ('C', 'S')
AND t.co_code IN ('G', 'V', 'A', 'D')
AND t.year = '2008'
ORDER BY l.city, f.year
상기 질의 내의 각 행의 합 쿼리 이쪽은 :
대신에 원래의 질의의 각 레코드를 통해 루핑SELECT SUM(nvl(t.sale_quantity,0)) sale_quantity
FROM loc t, father_table f
WHERE f.number = t.number(+)
AND f.code = '0001'
AND f.c_code = '01'
AND f.year = '2008'
AND t.code = 'C'
AND t.location = '1566' <----- EACH ROW'S t.location VALUE
AND t.co_code IN ('G', 'V', 'A', 'D')
GROUP BY t.location, t.code, f.year
가있다 거기 방법은 내가 쿼리를 결합하고 위치의 쿼리에 SUM을 가질 수 있습니다. 여기서 핵심은 t.code = 'C'가 아닌 'C'가 아닌 두 번째 쿼리에서만 판매 SUM을 얻는다는 것입니다. & 'S'