残っている場合はテーブル1から行を返そうとしていますelseこのようなすべての列に対して左の結合のテーブル値を戻しています左側の結合のいずれかのテーブルからすべての列を返します
select
(case when u2.Id is null then u1.Name else u2.Name end) as Name,
(case when u2.Id is null then u1.Department else u2.Department end) as Department,
(case when u2.Id is null then u1.Office else u2.Office end) as Office
from user u1
left join user u2 on u1.TerminationDate = u2.TerminationDate
これは実用的な解決策ですが、私はこの例ではいくつかの列しか含んでいないので、たくさんの列があり、そこにあるはずですこれを達成するためのよりよいアプローチ。 coalesce()
またはisnull()
を使用して
[NAME'として '合体(u2.Name、u1.Name)](https://docs.microsoft.com/en-us/sql/t-sql/language-elements/coalesce-transact-sql) – SqlZim
@SqlZim - ありがとうございます!!! –
代わりに(SQL Serverの非ansi構文):['Name = isnull(u2.Name、u1.Name)'](https://docs.microsoft.com/en-us/sql/t-sql/functions/isnull-transact-sql) – SqlZim