2012-08-03 215 views
0

如果查詢返回多個結果,我需要在我選擇的位置獲取最新(id)行的條件。 (IBM DB2)SQL - 如果結果集包含多個行,則返回最新(id)結果

即:

ID--NUM1--COUNTRY--NUM2 

1--123--SE--123 

2--123--US--123 

而是有兩排回到我想有2行返回。

編輯:

我的查詢看起來像現在這樣:

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行? – 2012-08-03 12:01:19

+0

@AlexK正好! – 2012-08-03 12:05:09

回答

0

排序在descendng順序編號,並只獲得第一個記錄。

我不掌握最新的DB2語法,但類似:

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

這當然假定他直接查詢每個'num1' /'country' /'num2',或者只給他一行_total_,而不是每個元組一行。 – 2012-08-03 16:22:25

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 

子選擇將由ID分配每個num1行號,num2組合,爲了它,只能挑了冷杉該組合的第st行。