1

私は 7 つのテーブルを持っています (一意の行がありますが、一部の列は同じですが、ほとんどは各テーブルに一意です)。7 つのテーブルすべての 1 つのテーブル/ビューを作成したいのですが、同じ名前の列を 1 つに表示します。

表1

custid, ref#, uniq1, uniq2, field3, fiel4

テーブル2

custid, ref#, uniq1, uniq2, field3, fiel4, field5, field6

表 3

custid, ref#, uniq1, uniq2, field5, field6, field7, field8

出力が必要

テーブル/ビュー

custid, ref#, uniq1, uniq2, field3, field4, field5, field6, field7, field8

多くの null 値がありますが、それで問題ありません

ありがとう

4

2 に答える 2

4

Union述語は、結果全体で一意性を強制することに注意してください。したがって、おそらくUnion All結果を「一意化」しない which を使用することをお勧めします。さらに、欠落している列にプレースホルダー値 (この場合は NULL を使用) を追加して、各 Select ステートメントが同じ数の列を返すようにする必要があります。

Select custid, ref#, uniq1, uniq2, field3, fiel4, NULL As field5
    , NULL As field6, NULL As field7, NULL As field8
Union All
Select custid, ref#, uniq1, uniq2, field3, fiel4, field5, field6, NULL, NULL
Union All
Select custid, ref#, uniq1, uniq2, NULL, NULL, field5, field6, field7, field8

最後に、Union または Union All クエリでは、最初のクエリの列名が結果の列名として使用されます。したがって、最初のクエリのプレースホルダー値の場合は、列のエイリアスを追加する必要があります。

于 2012-06-09T00:17:48.970 に答える
0

結合ではなく結合が必要です。

select x, y from table1
union
select x, y from table2
...
于 2012-06-08T23:29:26.717 に答える