1

SQLServerで2つのテーブルを結合する試みについて質問があります...

1つのテーブルに約30列(テーブルa)があり、2番目のテーブルに約5列(テーブルb)があり、これらの5つは30列のテーブルにあります。テーブルaの最後にテーブルbを追加し、新しい行の存在しない列に0の値を使用できるようにしたい。

これを行う方法はありますか?明らかに、テーブルaの他の列を保持したい場合、通常のユニオンは機能しません。

4

2 に答える 2

3

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
于 2012-08-14T16:36:45.270 に答える
0

次の場所に行を挿入するだけです。

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
于 2012-08-14T17:52:30.733 に答える