2012-08-03 3 views
0

쿼리에서 둘 이상의 결과를 반환하는 경우 최신 (id) 행을 가져올 선택에 조건이 필요합니다. (IBM의 DB2)SQL - 결과 집합에 둘 이상의 행이 포함 된 경우 최신 (id) 결과가 반환됩니다.

즉 :

두 행이 나 행이 반환하고 싶은 반환하는 대신 필요없이
ID--NUM1--COUNTRY--NUM2 

1--123--SE--123 

2--123--US--123 

.

는 편집 :

SELECT LET1.INSTANCE_ID, COU.CODE, SUP1.SUPPLIERID, PAR.PARTNUMBER 

FROM  TABLES 

WHERE TABLEJOIN_CONDITIONS 

AND  TABLE.COLUMN IN ('11994', '12345' and so on) 

을하지만이 쿼리는 중복 행을 반환 할 수 있습니다

내 질문이 지금처럼 보인다.

처럼 :

ID--NUM1--COUNTRY--NUM2 

1--123--SE--11994 (11994 appearing twice, then I want the latest row which is row number 2) 

2--123--US--11994 
+0

그래서 ID가 가장 큰 행을 원하십니까? –

+0

@AlexK 정확하게! –

답변

0

descendng 순서로 ID에 정렬, 얻을 첫 번째 기록.

내가 DB2 구문에 대한 최신 아니지만, 뭔가 같은 :

SELECT id, num1, country, num2 
FROM SomeTable 
ORDER BY ID DESC 
FETCH FIRST 1 ROW ONLY 
+0

이것은 당연히 그가'num1' /'country' /'num2'에 대해서 직접적으로 쿼리한다고 가정하거나 튜플 당 하나의 행과는 반대로 한 행에 _total_을 줄 것입니다. –

0

내가 번호를 확인하는 조금 혼란 스러워요 그것은 "독특한"하지만 당신은 최신 ID를 원하는 경우 각 NUM1, NUM2 조합은 다음과 같은 일을 할 수있는 :

SELECT * 
FROM (
    SELECT A.*, 
      ROW_NUMBER() OVER (PARTITION BY NUM1, NUM2 ORDER BY ID DESC) AS RN 
    FROM YOUR_TABLE A 
) 
WHERE RN = 1 

IDnum1에 대한 행 번호, num2 조합 순서를 지정하고, 단지 전나무를 선택합니다 하위 선택 해당 조합에 대한 st 행.

관련 문제