2014-10-20 3 views
0

내가이는 방법을 알고

SELECT FIELD_1, FIELD_2... FIELD_N, SUM(AMOUNT) 
FROM TABLE 
GROUP BY FIELD_1, FIELD_2... FIELD_N 
ORDER BY FIELD_1, FIELD_2... FIELD_N 

같은 쿼리 이전에 따라 변화 첫 번째 필드 무엇을 알 수있는 방법이 있나요이 이전 등록을 통해 변경 첫 번째 필드 것입니다 쿼리 결과를 처리 할 때 등록 하시겠습니까?

GROUPING_ID과 같은 sql 함수 (Oracle 데이터베이스)를 검색하고 있지만이 쿼리는 GROUP BY ROLLUP 쿼리에서만 유용하며 부분합은 필요하지 않습니다.

이러한 기능이없는 경우 수동 검색을 프로그래밍해야하며 결과 집합에 대한 액세스를 최소화하고 싶습니다.

+2

샘플 데이터와 원하는 결과를 제공하면 질문이 명확 해집니다. –

답변

1

저는 여러분이 원하는 것을하기 위해 분석 함수를 사용하여 원하는 것을 할 수 있다고 확신합니다. 아마도 이것이 당신이 원하는 것일까요?

SELECT FIELD_1, FIELD_2... FIELD_N, SUM(AMOUNT), 
     (case when field_1 <> lag(field_1) over (order by FIELD_1, FIELD_2... FIELD_N) or 
        lag(field_1) over (order by FIELD_1, FIELD_2... FIELD_N) is null 
      then 'field_1' 
      when field_2 <> lag(field_2) over (order by FIELD_1, FIELD_2... FIELD_N) 
      then 'field_2' 
      . . . 
      else 'field_n' 
     end) as WhichGrouping 
FROM TABLE 
GROUP BY FIELD_1, FIELD_2... FIELD_N 
ORDER BY FIELD_1, FIELD_2... FIELD_N 
+0

정확히 무엇을 찾고 있어요! 그것은 쿼리를 느리게 만들지 만, 나는 그 프로세스에서 보상 될 것이라고 생각한다. – Telcontar

관련 문제