0

ここにテーブルがあります:

    id -           date               - attempts
    --------------------------------------------
    1  -  2012-12-11 14:52:06.143     - success
    2  -  2012-12-11 15:51:52.320     - whatever
    3  -  2012-12-11 12:51:52.321     - success
    4  -  2012-12-11 12:51:52.312     - whatever 
    5  -  2012-12-11 14:51:52.320     - fail

最新の「失敗」行と最新の「成功」行を取得しようとしています。次に、2 つのうち、最新の行が失敗したかどうかを確認します (失敗行より後に成功行がある可能性があります)。

「成功」または「失敗」以外の可能性があるため、最新の行を選択することはできません。

4

2 に答える 2

4

内側のクエリは、試行が成功または失敗した最新の日付のレコードを識別します。外側のクエリは、内側のクエリの結果と組み合わせて、失敗したレコードを識別します。

SELECT
    a.*
FROM
    myTable a
    JOIN
    (
        SELECT MAX(date) AS `date` FROM myTable
        WHERE attempts IN ('success', 'fail')
    ) b
    ON a.date = b.date
WHERE
    a.attempts = 'fail'
于 2012-12-16T03:57:45.293 に答える
0
  Select s.id successId, s.date latestSuccess, 
         f.id failId, f.date latestFail, 
         case When s.date > f.Date 
              Then 'Success' Else 'Fail' End Last
  From myTable s full join mytable f
     On s.attempts = 'success'
        And s.date - (Select Max(date) From myTable
                    Where attempts = 'success')
        And f.attempts = 'fail'
        And f.date - (Select Max(date) From myTable
                      Where attempts = 'fail')
于 2012-12-16T04:05:44.880 に答える