私はSQLServer2008を使用しています。これが、nullではない最初の日付を取得するための最良のコードであるかどうか疑問に思いました。
select actualdate = coalesce((select date1 from table1), (select date2 from table2))
私はSQLServer2008を使用しています。これが、nullではない最初の日付を取得するための最良のコードであるかどうか疑問に思いました。
select actualdate = coalesce((select date1 from table1), (select date2 from table2))
IsNull
このコンテキストで使用できます。
Coalesce
値を取得するために複数の列がある場合に使用する必要がありNot Null
ます。
select ISNULL((select top 1 OBJECT_ID from sys.objects), 0)
go
select coalesce((select top 1 OBJECT_ID from sys.objects), 0)
SQLプロファイラーの読み取りを表示するには、ここをクリックしてください
クエリにステートメントがありませTop
ん。そうしないと、次のエラーが発生する可能性があります。
サブクエリは複数の値を返しました。サブクエリが=、!=、<、<=、>、> =の後に続く場合、またはサブクエリが式として使用される場合、これは許可されません。
いくつかの共通IDを使用して2つのテーブルを結合できる場合は、以下のクエリを使用できます。
select @actualdate = CASE WHEN t1.date1 is null then t2.date else t1.date end
from table1 t1 inner join table2 t2
on t1.id=t2.id
これらの2つのテーブル間に共通のIDがない場合は、row_number()でCTEを使用して2つのテーブルを結合してみてください。