0

クエリが複数の結果を返す場合、最新の (id) 行を取得する選択の条件が必要です。(IBM DB2)

すなわち:

ID--NUM1--COUNTRY--NUM2

1--123--SE--123

2--123--US--123

2 つの行が返される代わりに、行 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

どの数字が「一意」であるかについて少し混乱していますが、IDNUM1, 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 に答える