私は、多数のテーブルと結合を含む複数のselect文を持っています。すべてのselectステートメントは同じヘッダーを持ちます。私はこのすべてを1つの結果セットにまとめようとしています。したがって、どちらのアプローチがより良いSQL UNION
またはMERGE
ですか? 私はUNIONがA + Bであることを知っています。したがって、テーブルAのカラムがNULLで、テーブルBに値がある場合、UNIONは2つのローを与えますか?ですから、もし私がMERGEを使うべきであれば、idに基づいてすべての行を1つの行にまとめたいのですか? SQLまたはSSISでこれを行うオプションがあります。SQL UNIONとMERGE
SELECT ID, NAME, VitalName as VitalName FROM TABLE A
UNION
SELECT ID, NAME, VitalReadings as VitalName FROM TABLE B
TableAの
+----+------+-----------+
| ID | Name | VitalName |
+----+------+-----------+
| 1 | AAA | HeartRate |
| 2 | | Systolic |
| 3 | | Diastolic |
+----+------+-----------+
TableBの
+----+------+---------------+
| ID | Name | VitalReadings |
+----+------+---------------+
| 1 | AAA | HeartRate |
| 2 | BBB | Systolic |
+----+------+---------------+
期待される結果
+----+------+---------------+
| ID | Name | VitalName |
+----+------+---------------+
| 1 | AAA | HeartRate |
| 2 | BBB | Systolic |
| 3 | | Diastolic |
+----+------+---------------+
私は労働組合それらをすべて一緒に、重複を処理するために、外側のクエリの使用ROW_NUMBERおよび/またはランクだろう。マージはあなたのケースで使用することができますが、本当にこのタイプのもののために作られていません。 –
ユニオンのポイントは(ユニオンallとは異なり)重複を許さないものですが、それ自体でシストリックが@shockwaveのように見えることはありません – user8834780
'MERGE'は' INSERT'、 'UPDATE'、 DELETE'操作を1つのステートメントに追加します。 'SELECT'だけに興味があるので、UNIONを使うべきです。しかし、両方のテーブルに表示されるID 2をどのように処理したいかという問題はまだあります。それらを一緒に組み合わせようとしているのですか、または 'Name'値などのビジネスロジックを持っているものを取っていますか? –