0

如果查询将返回多个结果,我需要在我的选择中获得最新(id)行的条件。(IBM db2)

IE:

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
4

2 回答 2

0

对 id 进行降序排序,只获取第一条记录。

我不是最新的 db2 语法,但类似:

SELECT id, num1, country, num2
FROM SomeTable
ORDER BY ID DESC
FETCH FIRST 1 ROW ONLY
于 2012-08-03T12:01:55.050 回答
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

子选择将为每个num1,num2组合分配一个行号,按 , 排序ID,并且只选择该组合的第一行。

于 2012-08-03T15:24:27.717 回答