2

次の表があります。

name     created_for created_on            status
jen      2012-05-27  2012-02-15 12:14:09    Y
joe      2012-10-01  2012-02-15 12:22:09    Y
bob      2012-10-01  2012-02-15 12:47:09    N
jim      2012-10-01  2012-02-24 12:47:09    N
jim      2012-10-01  2012-02-29 12:47:09    Y
sam      2012-10-01  2012-03-11 12:47:09    N
sam      2012-10-01  2012-03-15 12:47:09    C
sam      2012-10-01  2012-03-22 12:47:09    Y
tom      2012-10-01  2012-04-10 12:47:09    N
tom      2012-10-01  2012-04-11 12:47:09    N

私が返したいのは、2012-10-01 の created_for 日付を持つ各人物の名前の最後の行、created_on ですが、その最後のエントリのステータスが N の場合のみです。したがって、上記のテーブルについては、戻る:

name     created_on
bob      2012-02-15 12:47:09
tom      2012-04-11 12:47:09

ステータス条件は私を投げているものです。正しい結果を得るために「where status='N'」をどこに配置すればよいかわかりません。

4

2 に答える 2

2

これを試して:

 SELECT t1.*
 FROM
 (
    SELECT name, MAX(created_on) MaxDate
    FROM YourTableName
    GROUP BY name
  ) t1 INNER JOIN YourTableName t2  on t1.name    = t2.name 
                                   AND t1.MaxDate = t2.created_on
 WHERE t2.created_for = '2012-10-01'
   AND t2.status = 'N'
于 2012-10-10T15:29:19.313 に答える
2
select t.*
from MyTable t
inner join (
    select name, max(created_on) max_created_on
    from MyTable
    where created_for = '2012-10-01'
    group by name
) tm on t.name = tm.name and t.created_on = tm.max_created_on
where t.status = 'N'

SQL フィドルの例

于 2012-10-10T15:36:15.390 に答える