我一直在研究网站上发布的材料,无法确定它是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
答案 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
(我按日期命令提升,因为这对我来说更有意义。)
基本上,只要按日期排序的下一条记录有不同的标记,您就知道自己是该组的最后一条记录。