1

我一直在研究网站上发布的材料,但不知道是GROUP BY不是PARTITION BY,我似乎无法得到我想要的答案。

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

我添加了一小部分数据。

我想看到的是按日期顺序是最新的,所以我希望看到第 01 行是位置 ...004 中的第一个,然后下一个条目是第 209 行,因为它是 ...50 和然后 ROW 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
4

1 回答 1

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

(我按日期排序,因为它对我更有意义)。

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

于 2012-10-19T12:30:00.680 回答