1

私はSQLServer2008を使用しています。これが、nullではない最初の日付を取得するための最良のコードであるかどうか疑問に思いました。

    select actualdate = coalesce((select date1 from table1), (select date2 from table2))
4

2 に答える 2

0

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ん。そうしないと、次のエラーが発生する可能性があります。

サブクエリは複数の値を返しました。サブクエリが=、!=、<、<=、>、> =の後に続く場合、またはサブクエリが式として使用される場合、これは許可されません。

于 2012-08-07T17:10:17.083 に答える
0

いくつかの共通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つのテーブルを結合してみてください。

于 2012-08-09T06:16:12.700 に答える