0

次のデータを含む SQL Server 2008 テーブルがあります (小さなサンプル)

id                                          Date    Value
20448D6F-4099-408D-85FE-11EC6690CDB8    2010-06-01  1
20448D6F-4099-408D-85FE-11EC6690CDB8    2010-06-02  2
20448D6F-4099-408D-85FE-11EC6690CDB8    2010-06-03  3
20448D6F-4099-408D-85FE-11EC6690CDB8    2010-06-04  4
20448D6F-4099-408D-85FE-11EC6690CDB8    2010-06-05  NULL
EF595DE6-FF57-4625-8254-287F49843445    2010-06-02  2
EF595DE6-FF57-4625-8254-287F49843445    2010-06-03  3
EF595DE6-FF57-4625-8254-287F49843445    2010-06-04  4
EF595DE6-FF57-4625-8254-287F49843445    2010-06-05  NULL
C6F459EF-1493-4864-81C2-E5B55283EF0C    2010-06-04  45
C6F459EF-1493-4864-81C2-E5B55283EF0C    2010-06-05  NULL

クエリを実行しています

select * 
from [test].[dbo].[testtable]
where id in 
         (
            select id 
            from [test].[dbo].[testtable] 
             where Date='2010-06-05' and Value is null
          )
  and Date = DATEADD(D, -4, '2010-06-05')

返す

id                                          Date            Value
20448D6F-4099-408D-85FE-11EC6690CDB8    2010-06-01          1

2010-06-01しかし、次の分の日付を返したいのにレコードが存在しない場合

したがって、サンプルから表示される結果は次のようになります

id                                          Date            Value
20448D6F-4099-408D-85FE-11EC6690CDB8    2010-06-01          1
EF595DE6-FF57-4625-8254-287F49843445    2010-06-02          2
C6F459EF-1493-4864-81C2-E5B55283EF0C    2010-06-04          45

何百万ものレコードがありますが、これを T-SQL クエリで行うにはどうすればよいですか?

ありがとう

4

1 に答える 1