2017-01-23 3 views
2

(19122016,26122016,01012017,08012017など)すべての日付の組み合わせ([19122016,08012017]など)を次のように選択することは可能ですか? 'first_date'と 'secound_date'を実行してスクリプトを実行しますか?スクリプトで使用する日付のリスト

declare @last_date varchar(10), @previous_date varchar(10), @sql varchar(max); 
set @last_date ='20170115'; 
set @previous_date = '20170108'; 
set @sql = 'select * 
into umkp.dbp.rosk_'[email protected]_date+'_seg 
from umkp.dbp.rosk_'[email protected]_date+'_seg' 

結果として、作成されたタブのリストになります。

+0

なぜ単純にテーブルを分割するのではなく、これをやっていますか?または少なくともすべてのテーブルに対して「UNION」クエリを使用しますか?オプティマイザは、日付表に制約がある場合にのみ、正しい表をスキャンします。パーティショニングは非常に簡単です。 2016 SP1([ExpressおよびLocalDb](https://blogs.msdn.microsoft.com/sqlreleaseservices/sql-server-2016-service-pack-1-sp1-released/))を使用するすべてのエディションでご利用いただけます –

+0

実際に私はテーブル分割を必要としません。日付の範囲のすべての組み合わせに基づく計算で新しいテーブルを作成するスクリプトのソースとなる、日付の付いたデータベースがいくつかあります。申し訳ありませんが、多分私はあなたが意味するものを理解していない、私はSQL Serverの初心者です:( –

+0

あなたが求めているものは非常に不明です - あなたはテーブルを複製するようです。 [19122016、08012017]の[paring?])と、なぜこの組み合わせがあなたにクエリーされていないのですか? –

答えて

0

日付ペアを保持するテーブルまたはテーブル変数を作成します。次に、その表を使用して、表の各行に対してselect into文を作成します。

DECLARE @dates TABLE(last_date varchar(10), previous_date varchar(10)); 
INSERT @dates 
     (last_date, previous_date) 
VALUES ('19122016', '08012017'), 
     ('26122016', '01012017'); 

select 'select * 
    into umkp.dbp.rosk_'+last_date+'_seg 
    from umkp.dbp.rosk_'+previous_date+'_seg' 
FROM @dates; 
+0

"select * umkp.dbo.rosk_sas_crm_scoring_vector_15012017_seg_base from umkp.dbo.sas_crm_scoring_vector_08012017_seg_base "値。代わりに2つのテーブルを作成するために何かを追加できますか? –

+0

'@ dates'テーブル変数の各行に対して、last_dateカラムに従ったターゲットテーブルを持つ結果の行が1つあります。 –

+0

すべての日付を '@ dates'テーブル変数に挿入する必要があります –

関連する問題