-1

変更日と作成日を含むテーブルがあります。変更日は null にすることができますが、作成日は null にすることはできません。一意ではない学生番号を持つ別の列があります。

今、私は特定の学生番号を持つテーブルから最新のレコードを見つけたいと思っています。

次のクエリを使用しています。

Select Top (1) * from student_data order by modified_date desc, created_date desc

ただし、変更日がnullになる可能性があるため、機能しません。

Student Nr    Modified_date             Created_date
12345         NULL                  2013-09-02 11:41:30.967
12345         2013-09-02 11:42:20.663   2013-09-02 11:38:20.663
12345         2013-09-02 11:39:46.103   2013-09-02 11:38:10.660
12345         2013-09-02 11:37:59.480   2013-09-02 11:37:59.480
12345         NULL                  2013-09-02 11:37:44.477

次のレコードが返されるはずです。

12345         2013-09-02 11:42:20.663   2013-09-02 11:38:20.663
4

3 に答える 3

1
SELECT TOP (1) *
FROM
  ( SELECT TOP (1) *
    FROM student_data 
    ORDER BY modified_date DESC
  UNION ALL
    SELECT TOP (1) *
    FROM student_data 
    ORDER BY created_date DESC
  ) t 
ORDER BY 
  CASE WHEN modified_date > created_date 
           THEN modified_date
           ELSE created_date
  END DESC ;

SQL フィドルテスト

于 2013-09-02T07:27:43.880 に答える
0

:student_id は特定の学生番号です。

SELECT TOP 1 * FROM
 (Select * from student_data AS sd
  WHERE sd.modified_date IS NOT NULL
        AND sd.student_id = :student_id) as TMP
 ORDER BY modified_date desc, created_date desc
于 2013-09-02T07:11:00.630 に答える