ここでは、それぞれに異なるデータを持つ 2 つのテーブル (partoftableY1 と partoftableY2) で作成した例を示します。
/*
create table tableX (column1 int);
insert into tablex
select 1
union all select 2;
create table partoftableY1 (data nvarchar(50));
create table partoftableY2 (data nvarchar(50));
insert into partoftableY1 select 'hey 1 here';
insert into partoftableY2 select 'hey 2 here';
*/
declare @sql nvarchar(max)
-- use the ability of SQL to build up string of all the sql you need to run
set @sql = 'select data from (select '''' as data'
select @sql = COALESCE(@sql + ' union all ', '')
+ 'select data from partoftableY'
+ cast(column1 as nvarchar(4)) from tableX
select @sql = @sql + ') X where data <>'''''
-- DEBUG for seeing what SQL you created
print @sql
-- Now execute the SQL
exec sp_executesql @sql= @sql
の結果が得られます
hey 1 here
hey 2 here
データの種類に合わせて調整する必要がありますが、これで主なアイデアが得られるはずです
参考までに、作成して実行した SQL を次に示します。
select data
from (
select '' as data
union all select data from partoftableY1
union all select data from partoftableY2
) X
where data <>''
注意
- 実際には 1 つの長い行として作成されているため、読みやすいように書式設定して配置しました
- ユニオン内の選択ごとに列数を同じにする必要があるため、* を選択せずに selet データを使用しました。必要な列を選択してから、ユニオン内の選択のすべての列が同じになるように変更する必要があります。
- ユニオンコードを簡単にするために、ユニオンの上部にダミーの選択があります-ユニオンがすべて提示する必要があるかどうかなどの条件は必要ありません
- ユニオン全体でアウトセレクトを使用して、ダミーセレクトのsidを取得できるようにしました