2017-11-06 11 views
0

複数のテーブルを組み合わせた結果セットが必要です。 私は、パラメータで選択された各国のテーブルを使用してfrom句を持つクエリを持っています。複数のテーブルをSQLで結合する

例:

@prmCountry='AU,UK,US' 

は今節からのテーブル名は、それが個別にそれぞれの国のために実行する必要があることなどである。

from tbl_abc t1 
left outer join tbl_country_(CountryName) t2 
on..... 

まさにこれを行うには? ALLこのような

+0

でクエリに参加する最初のあなたは、行の形でウル国を分割する必要があります。ダイナミックな左を作成します。 –

+0

あなたはそれらを結合する必要がありますか、UNIONを介して「結果を結合する」方が良いでしょうか? – Tyron78

+0

はさらに説明が必要です。あなたのテーブルはどのように見えますか?出力はどのように見えますか? – Doruk

答えて

1

あなたの質問は、より明確ではないですが、あなたは、いくつかの動的なSQLクエリで探していたよう:

DECLARE @prmCountry VARCHAR(MAX)= 'AU,UK,US'; 
DECLARE @SQL NVARCHAR(MAX)= N''; 
DECLARE @Query NVARCHAR(MAX); 
SELECT @SQL+=N' left join table_'+CC.Country+' on table_'+CC.Country+'.<column> = t1.<column>' 
FROM 
(
    SELECT split.a.value('.', 'NVARCHAR(MAX)') [Country] 
    FROM 
    (
     SELECT CAST('<A>'+REPLACE(@prmCountry, ',', '</A><A>')+'</A>' AS XML) AS Country 
    ) C 
    CROSS APPLY Country.nodes('/A') AS split(a) 
) CC; 
SET @Query = 'SELECT * FROM tbl_abc t1'[email protected]+';'; 
PRINT @Query; 
--EXECUTE sp_executesql @query 

SQLクエリプロデュース:

SELECT * FROM tbl_abc t1 
left join table_AU on table_AU.<column> = t1.<column> 
left join table_UK on table_UK.<column> = t1.<column> 
left join table_US on table_US.<column> = t1.<column>; 
  1. 上記では、最初に@prmCountry値を行形式に分割しました。
  2. @prmCountry
+0

はい、正常です。ありがとうございました – Mish

0

使用UNION:

SELECT 
tbl_abc t1 
left outer join tbl_country_('AU') t2 
on..... 

UNION ALL 

SELECT 
tbl_abc t1 
left outer join tbl_country_('US') t2 
on..... 

...and so on 
関連する問題