DB2查询-选择特定的重复记录

DB2查询-选择特定的重复记录,db2,Db2,我对在IBMAS400上处理DB2非常陌生 我运行了以下查询: SELECT * FROM mytable WHERE ID = 1963003909 这是查询的结果: ID WK END DT VRSN AMT ----------- ---------- ------ ------------ 1963003909 201

我对在IBMAS400上处理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列中最大值的记录,以便能够将信息放入报告中

我试着阅读这个网站上的其他例子,但是没有找到任何没有显示如何从表中删除重复记录的内容


谢谢

看看这是否适合您:

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

您在示例中没有显示库名,但我显示了。

现在我面前没有DB2,但您应该能够使用ANSI SQL调用窗口函数(如ROW_NUMBER)按vrsn排序。然后根据您的订单进行选择。从以下内容开始:

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

基本上,DB2会将数字1分配给每个id的vrsn最高的行,并且会不断地分配,不同的OLAP函数会以不同的方式打破vrsn中的联系。

感谢您的帮助。我试图运行该查询,但没有得到任何结果。最后,我采取了简单的方法,修改了查询,将VRSN降序,然后将ID和周末日期存储在一个单独的存储字段中,并将字段与查询字段进行比较。如果字段相等,我将跳过将行移动到报表。再次感谢。你收到什么错误消息了吗?我在这里的AS/400上运行了这个精确的查询,它工作了-我在一个不同的表上运行了它,该表的数据与您的不同,但我所做的更改只是列名…感谢您提供的信息。正如我在最初的帖子中提到的,我对DB2非常陌生,所以你在回复中提到的很多内容都超出了我的理解范围。