1

私のSQLデータベースは次のようになります

ID DATE 
1  2017-01-01
1  2017-01-03
1  2017-01-05
2  2017-01-06 
2  2017-01-07
2  2017-01-08
2  2017-01-11
3  2017-01-11

以下のように、各 ID の Max(DATE) と 2 番目に新しい日付を取得するにはどうすればよいですか。

 ID MAXDATE     SECONDMAXDATE        
 1  2017-01-05  2017-01-03  
 2  2017-01-11  2017-01-08
 3  2017-01-11  2017-01-11 (or 'NONE')

PS: レコードが 1 つしかない場合、SECONDMAXDATE は MAXDATE または STRING (例: NONE) のいずれかを表示できます。

4

2 に答える 2

0

例えば:

SELECT x.id
     , x.date
  FROM
     ( SELECT id
            , date
            , CASE WHEN @prev=id THEN @i:=@i+1 ELSE @i:=1 END i
            , @prev:=id prev 
         FROM my_table
            , ( SELECT @prev:=null,@i:=0 ) vars
        ORDER
           BY id
            , date DESC
     ) x
 WHERE i <= 2;
于 2017-10-04T17:26:19.857 に答える