1

テーブルをそれ自体のサブセットに結合しようとしていますが、問題が発生しています。私の入力には、次のように ID と日付が含まれています。

 2013-10-14 eca02319d91421445f82d570960c5d0c

 2013-10-15 eca02319d91421445f82d570960c5d0c

 2013-10-16 eca02319d91421445f82d570960c5d0c

 2013-10-17 eca02319d91421445f82d570960c5d0c

 2013-10-19 eca02319d91421445f82d570960c5d0c

 2013-10-21 eca02319d91421445f82d570960c5d0c

私の目標は、次のように、各日付の同じ ID で最後に表示された日付を特定することです。

     Date          ID                                 Last Date
  2013-10-21    eca02319d91421445f82d570960c5d0c     2013-10-19

  2013-10-19    eca02319d91421445f82d570960c5d0c     2013-10-17
  etc.

次の SQL を使用すると、以下の出力が得られます。

select a.Day,a.entity, b.Day from Visitor a
    LEFT OUTER JOIN Visitor b 
on a.entity = b.entity
       and b.day < a.day
where b.day is not null

 output

 2013-10-21 eca02319d91421445f82d570960c5d0c    2013-10-14

 2013-10-21 eca02319d91421445f82d570960c5d0c    2013-10-15

 2013-10-21 eca02319d91421445f82d570960c5d0c    2013-10-17

 2013-10-21 eca02319d91421445f82d570960c5d0c    2013-10-19

 2013-10-19 eca02319d91421445f82d570960c5d0c    2013-10-14

 2013-10-19 eca02319d91421445f82d570960c5d0c    2013-10-15

a.day のインスタンスごとに 1 つのレコードだけを取得し、b.day を降順で処理するには何が必要ですか?

前もって感謝します!

4

1 に答える 1

1

次のようなことを試してください:

SELECT distinct a.date, a.id, (select d.date from data d
        where a.date > d.date AND a.id = d.id
        order by d.date desc limit 1) as last_date 
FROM data a where (select d.date from data d
        where a.date > d.date AND a.id = d.id
        order by d.date desc limit 1) is not null
ORDER by a.date desc;

SQL フィドル

于 2013-10-23T06:49:41.740 に答える