ピボットトリックはどうですか?
ただ異なる解決策..
完全な外部結合ソリューションの方が読みやすいと思います
とりあえず..
各行のすべての列に同じ名前が本当に必要な場合、または存在しない場合はnull
あなたはこのようなことをするべきです
select *
from( select name as row
,'Table A' as [table]
,name
from [table A]
union all
select name as row
,'Table B' as [table]
,name
from [Table B]
union all
select name as row
,'Table C' as [table]
,name
from [Table C]
)V
PIVOT(max(v.name) for [table] in ([Table A],[Table B],[Table C]))P
order by row
結果セットは次のようになります
Table A Table B Table C
Dilip Dilip NULL
Amit NULL Amit
Piyush NULL Piyush
Sumit Sumit NULL
各テーブルの名前のリストが必要な場合は、
その等しい名前は同じ行にある必要はありません..このようなことをする必要があります
select *
from( select ROW_NUMBER() over (order by name) as row
,'Table A' as [table]
,name
from [table A]
union all
select ROW_NUMBER() over (order by name) as row
,'Table B' as [table]
,name
from [Table B]
union all
select ROW_NUMBER() over (order by name) as row
,'Table C' as [table]
,name
from [Table C]
)V
PIVOT(max(v.name) for [table] in ([Table A],[Table B],[Table C]))P
order by row
結果セットは次のようになります
Table A Table B Table C
Amit Dilip Amit
Dilip Sumit Piyush
Piyush NULL NULL
Sumit NULL NULL