4

IBM AS400 で DB2 を扱うのは初めてです。

次のクエリを実行しました。

SELECT *                                                         
FROM mytable
WHERE ID = 1963003909     

クエリの結果は次のとおりです。

     ID    WK END DT  VRSN    AMT  
 -----------  ----------  ------  ------------  
  1963003909  2012-03-24       1          0.00  
  1963003909  2012-03-31       1          0.00  
  1963003909  2012-04-07       1          0.00  
  1963003909  2012-04-14       1          0.00  
  1963003909  2012-04-21       1          0.00  
  1963003909  2012-04-28       1          0.00  
  1963003909  2012-05-05       1          0.00  
  1963003909  2012-05-12       1          0.00  
  1963003909  2012-05-19       1          0.00  
  1963003909  2012-05-26       1          0.00  
  1963003909  2012-06-02       1          0.00  
  1963003909  2012-06-09       1          0.00  
  1963003909  2012-06-16       1          0.00  
  1963003909  2012-06-23       1          0.00  
  1963003909  2012-06-30       1          0.00  
  1963003909  2012-07-07       1          0.00  
  1963003909  2012-07-14       1          0.00  
  1963003909  2012-07-21       1          0.00  
  1963003909  2012-07-28       1          0.00  
  1963003909  2012-07-28       2        320.00  

情報をレポートに入れることができるように、クエリを変更して、VRSN 列に最大値を持つレコードのみを選択できるようにしたいと考えています。

このサイトから他の例を読み込もうとしましたが、テーブルから重複レコードを削除する方法を示していないものは見つかりませんでした。

ありがとう

4

2 に答える 2

2

現在、DB2は手元vrsnにありません、. 次に、注文に基づいて選択します。次のようなものから始めます。 ROW_NUMBER()

with data(<column_list>, Ranking) as (
select *, ROW_NUMBER() OVER(PARTITION BY id ORDER BY vrsn desc) as Ranking
from mytable
)
select * from data where Ranking = 1

vrsn基本的に、DB2 はすべての値が最も高い行に番号 1 を割り当てid、さまざまな OLAP 関数がさまざまな方法で同点を解消しvrsnます。

于 2012-10-22T20:42:45.933 に答える
1

これがうまくいくかどうかを確認してください:

SELECT *
FROM mylibrary.mytable
WHERE ID = 1963003909 AND VRSN = (SELECT MAX(VRSN) FROM mylibrary.mytable)

あなたの例ではライブラリ名を示していませんでしたが、私は持っています。

于 2012-10-22T20:24:04.017 に答える