1

私はサイトに投稿された資料を調査してきましたが、それがそうであるGROUP BYかどうかPARTITION BYわかりません。また、私が望む答えが得られないようです.

私が持っているのは膨大な量のTAGデータであり、必要なのは、それが見られた場所の履歴を取得することです。つまり、特定の場所で最後に見られた時間を表示します。

データの小さなサブセットを追加しました。

私が見たいのは、日付順です。順序が最初に新しいので、ROW 01 が ...004 の最初の場所として表示され、次のエントリは ...50 の最新のエントリであるため、ROW 209 になると予想されます。次に、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 に答える