SQLServerで2つのテーブルを結合する試みについて質問があります...
1つのテーブルに約30列(テーブルa)があり、2番目のテーブルに約5列(テーブルb)があり、これらの5つは30列のテーブルにあります。テーブルaの最後にテーブルbを追加し、新しい行の存在しない列に0の値を使用できるようにしたい。
これを行う方法はありますか?明らかに、テーブルaの他の列を保持したい場合、通常のユニオンは機能しません。
SQLServerで2つのテーブルを結合する試みについて質問があります...
1つのテーブルに約30列(テーブルa)があり、2番目のテーブルに約5列(テーブルb)があり、これらの5つは30列のテーブルにあります。テーブルaの最後にテーブルbを追加し、新しい行の存在しない列に0の値を使用できるようにしたい。
これを行う方法はありますか?明らかに、テーブルaの他の列を保持したい場合、通常のユニオンは機能しません。
col3
に存在しないと仮定すると、基本的な考え方はこれですTableB
:
select col1, col2, col3 from TableA
union all
select col1, col2, 0 as col3 from TableB
各列内でデータ型を同じに保つように注意してください。
TableB
最後に記録を保持するには、次のようにします。
select col1, col2, col3
from (
select 1 as Rank, col1, col2, col3 from TableA
union all
select 2 as Rank, col1, col2, 0 as col3 from TableB
) a
order by Rank
次の場所に行を挿入するだけです。
insert into A(col1, col2, col3, col4, col5)
select col1, col2, col3, col4, col5
from B
これにより、残りの列にデフォルト値が適用されます。デフォルトは通常NULLですが、createtableステートメントで変更できます。0を取得するには、列を含めて値を指定する必要があります。
insert into A(col1, col2, col3, col4, col5, col6 . . . col30)
select col1, col2, col3, col4, col5, 0 . . . 0
from B