DB2 9.7返回了不同的行

时间:2012-10-19 11:55:12

标签: db2 distinct

我一直在研究网站上发布的材料,无法确定它是GROUP BY还是PARTITION BY,而我似乎无法得到我想要的答案。

我拥有的是大量的TAG数据,我需要的是检索它所见到的位置的历史记录,即显示我最后一次在特定位置看到的位置。

我添加了一小部分数据。

我希望看到的是按日期顺序是最新的第一,所以我希望看到ROW 01作为第一个位置... 004然后下一个条目将是ROW 209,因为它是最新的条目.. .50然后再行216 ..004所以每次都有变化。

可以使用SQL语句

完成

感谢您提供的任何帮助

ROW    TAG    DATE
001    004    2012-10-19 10:20
002    004    2012-10-19 10:10
003    004    2012-10-19 10:00
209    050    2012-10-19 08:50
210    050    2012-10-19 08:40
211    050    2012-10-19 08:30
216    004    2012-10-19 07:30
217    004    2012-10-19 02:20

1 个答案:

答案 0 :(得分:1)

以下是如何做到的:

with last_records_tagged as (
    select 
        row, 
        tag, 
        date,
        case when lead(tag) over (partition by tag order by date asc) is null 
            then 1 
            else 0
        end as last
        from your_table
)
select * from last_records_tagged where last = 1

(我按日期命令提升,因为这对我来说更有意义。)

基本上,只要按日期排序的下一条记录有不同的标记,您就知道自己是该组的最后一条记录。