2017-01-23 6 views
2

Ist es möglich, eine Liste von Daten zu definieren (zum Beispiel: 19122016, 26122016, 01012017, 08012017), die jede Kombination von Daten (wie: [19122016, 08012017]) ausgewählt wird 'first_date' und 'secound_date' um Skript auszuführen?Liste der Daten, die in einem Skript verwendet werden können

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' 

Und als Ergebnis wäre eine Liste von Tabellen erstellt.

+0

Warum machst du das, anstatt einfach die Tabelle zu partitionieren? Oder zumindest eine "UNION" -Abfrage über alle Tabellen verwenden? Das Optimierungsprogramm durchsucht nur dann die richtige Tabelle, wenn eine Einschränkung für die Datumstabelle vorliegt. Partitionieren ist jedoch viel einfacher. Es ist in allen Editionen mit 2016 SP1 verfügbar ([sogar Express und LocalDb]) (https://blogs.msdn.microsoft.com/sqlreleaseservices/sql-server-2016-service-pack-1-sp1-released/)) –

+0

Eigentlich Ich brauche keine Tabellenpartitionierung. Ich habe einige (in ihrem Namen) Datenbanken, die eine Quelle für ein Skript sind, um neue Tabellen mit Berechnungen zu erstellen, die auf jeder Kombination von Datumsbereichen basieren. Sorry, vielleicht verstehe ich nicht, was du meinst, ich bin ein Anfänger mit SQL-Server :( –

+0

Es ist sehr unklar für mich, was Sie fragen - Sie scheinen Klon-Tabellen zu sein. Auch wie kommst du zu einer Kombination (pairing?) von [19122016, 08012017] und warum wird diese Kombination nicht in die Abfrage mitgenommen? –

Antwort

0

Erstellen Sie eine Tabelle oder Tabellenvariable, um die Datenpaare zu halten. Verwenden Sie dann diese Tabelle, um eine SELECT-Anweisung für jede Zeile in der Tabelle zu erstellen.

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

Es gibt nur 2 Zeilen mit "select * in umkp.dbo.rosk_sas_crm_scoring_vector_15012017_seg_base von umkp.dbo.sas_crm_scoring_vector_08012017_seg_base "Werte. Kann ich etwas hinzufügen, um stattdessen 2 Tabellen zu erstellen? –

+0

Für jede Zeile in der Tabellenvariable '@ dates' gibt es eine resultierende Zeile mit Zieltabellen gemäß der Spalte 'last_date'. –

+0

Sie müssen alle Ihre Daten in die '@ dates' Tabelle Variable einfügen –

Verwandte Themen