2010-03-01 2 views
2

이것은 매우 쉬운 쿼리입니다 (필자는 생각합니다).하지만 저는 그것을 할 수 없습니다.AS400 용 DB2의 간단한 쿼리

좀이 같은 데이터가 있습니다

A   B  C 
1  1100  5 
1  1100  5 
1   500  1 
2  1200  4 
2  1200  4 
2   600  1 
3  1300  3 
3  1300  3 
3   700  1 

을 그리고 나는이 같은 C의 SUM, 또는 뭔가 당 최고 B를 반환 할 : 또한

A  B C 
1 1100 10 
2 1200 8 
3 1300 6 

, 내가 ' m AS400 용 DB2를 사용하므로 TOP 키워드를 사용할 수 없습니다.

EDIT @의 OMG의 조랑말 : 나는

SELECT 
    t.A 
    ,MAX(t.B) 
    ,SUM(t.C) 
FROM t 
GROUP BY 
    t.A 

같은 somethine을 시도

하지만 C의 총합을 반환뿐만 아니라 사람이 선택 :

A B C 
1 1100 11 
2 1200 9 
3 1300 7 

감사합니다! DB2 사용자에

SELECT t.a, 
     t.b, 
     t.c 
    FROM TABLE t 
    JOIN (SELECT x.a, 
       MAX(x.b) AS max_b 
      FROM TABLE x 
     GROUP BY x.a) y ON y.a = t.a 
        AND y.max_b = t.b 

답변

4

그렇게

SELECT t.a, 
     MAX(t.b) 
    FROM TABLE t 
GROUP BY t.a 

당신이 AMAX(b) 값과 관련된 전체 기록, 사용을 원하는 경우에, 보이는 FETCH FIRST # ROWS ONLY 을 사용하여 TOP 조건자를 모방했지만 SQL 문 끝 부분에 표시됩니다.

+0

감사합니다. 그러나 해결책은 효과가 있지만 이걸 가지고는 다른 일을 할 수는 있었지만 그렇게하지는 못했습니다. 이것도 나에게 줄 수 있니? 질문을 읽어보십시오. 감사합니다 =). – Carlo

+0

@Carlo : 업데이트되었지만 그게 맞는지 확실하지 않습니다. –

+0

매력처럼 작동합니다. 결국 GROUP BY t.A, t.B가 필요했습니다. 감사합니다. 좋은 대답. – Carlo

2

: 각 값에 대한 최대의 B 값을 원하는처럼