2016-06-30 12 views
0
---------table_01_01_2016---------- 
| Name  |  Datetime  | 
| Tom   | 01/01/2016 17:50:00 | 
| Tomas  | 01/01/2016 17:55:00 | 
| Sara  | 01/01/2016 17:58:00 | 
----------------------------------- 

---------table_02_01_2016---------- 
| Name  |  Datetime  | 
| Tom   | 02/01/2016 16:50:00 | 
| Tomas  | 02/01/2016 16:55:00 | 
| Sara  | 02/01/2016 16:58:00 | 
----------------------------------- 

---------table_03_01_2016---------- 
| Name  |  Datetime  | 
| Tom   | 03/01/2016 17:51:00 | 
| Tomas  | 03/01/2016 17:52:00 | 
| Sara  | 03/01/2016 17:53:00 | 
----------------------------------- 
. 
. 
. 
. 
---------table_30_06_2016---------- 
| Name  |  Datetime  | 
| Tom   | 30/06/2016 17:50:00 | 
| Tomas  | 30/06/2016 17:55:00 | 
| Sara  | 30/06/2016 17:58:00 | 
----------------------------------- 

Tabellen werden jeden Tag erstellt. Ich möchte mehrere Tabellen zusammenfassen.SQL Script zwischen mehreren Tabellennamen

--Summary_01_01_2016 to Summary_30_06_2016-- 
|   Name  |  Datetime  | 
| Tom     | 01/01/2016 17:50:00 | 
| Tomas    | 01/01/2016 17:55:00 | 
| Sara    | 01/01/2016 17:58:00 | 
| Tom     | 02/01/2016 16:50:00 | 
| Tomas    | 02/01/2016 16:55:00 | 
| Sara    | 02/01/2016 16:58:00 | 
| Tom     | 03/01/2016 17:51:00 | 
| Tomas    | 03/01/2016 17:52:00 | 
| Sara    | 03/01/2016 17:53:00 | 
. 
. 
. 
. 
. 
| Tom     | 30/06/2016 17:50:00 | 
| Tomas    | 30/06/2016 17:55:00 | 
| Sara    | 30/06/2016 17:58:00 | 
---------------------------------------------  

Ich Skript nicht beitreten Tabelle in lange. Vielen Dank für Hilfe me ^^

+3

Fix Ihren Prozess Zeilen in eine einzige Tabelle einzufügen, anstatt verschiedene Tabellen zu erstellen. Eine einzelne Tabelle ist der richtige Weg, um diese Art von Daten zu speichern. –

+0

Wenn Sie das oben Gesagte nicht tun können, suchen Sie nach UNION ALL. –

+0

thx für die Antwort ^^ –

Antwort

0

können Sie verwenden, um dynamische SQL:

DECLARE @sql nvarchar(max) 

;WITH cte AS (
SELECT CAST('2016-01-01' as datetime) as d 
UNION ALL 
SELECT DATEADD(day,1,d) 
FROM cte 
WHERE d < '2016-06-30' 
) -- table contains dates from needed interval 

SELECT @sql = (
SELECT 'SELECT * FROM table_' + REPLACE(CONVERT(nvarchar(10),d,104),'.','_') + ' UNION ALL ' + CHAR(10) 
FROM cte 
FOR XML PATH('') 
) --creating a script 
OPTION (MAXRECURSION 0) 

PRINT @sql 

--EXEC sp_executesql @sql --this will execute script 

Ausgang:

SELECT * FROM table_01_01_2016 UNION ALL 
SELECT * FROM table_02_01_2016 UNION ALL 
SELECT * FROM table_03_01_2016 UNION ALL 
SELECT * FROM table_04_01_2016 UNION ALL 
SELECT * FROM table_05_01_2016 UNION ALL 
SELECT * FROM table_06_01_2016 UNION ALL 
SELECT * FROM table_07_01_2016 UNION ALL 
SELECT * FROM table_08_01_2016 UNION ALL 
SELECT * FROM table_09_01_2016 UNION ALL 
.. 

etc

+0

thx für die Hilfe, werde ich morgen versuchen ^^ –

+0

Ich möchte Ausgabedatum der Zeit ändern: SELECT * FROM table_2016_01_01 UNION ALL SELECT * FROM table_2016_01_02 UNION ALL SELECT * FROM table_2016_01_03 UNION ALL SELECT * FROM table_2016_01_04 UNION ALL SELECT * FROM tabelle_2016_01_05 UNION ALL SELECT * FROM tabelle_2016_01_06 Was soll ich tun? –

+0

Ändern Sie 104 auf 102 in CONVERT Teil! – gofr1

0

Hart wie Ihre „Frage“ zu sagen, fehlt jedes sinnvolles Detail ..

Allerdings ist es fast Freitag und ich bin im Urlaub bald so .......

Betrachten Sie UNION und UNION ALL

Vielleicht kann das Ihnen helfen.

+0

Aber letztlich - Gordon hat Recht. – AntDC

+0

Ist es uns möglich, SQL-Skript Zwischen Tisch zu nehmen, die Tabellennamen wie SELECT * FROM [table_01_01_2016] als WHERE VORHANDEN (1 VON table_30_06_2016 AS b WHERE a.Datetime ZWISCHEN a.Datetime SELECT. 01/01/2016 UND b.Datetime.03/01/2016 ); –

0

Sie können Union alle verwenden.

Select * From table_01_01_2016 
Union All 
Select * From table_02_01_2016 
Union All 
Select... 
+0

Ich bin mir nicht sicher, was du genau meinst. Wenn Sie eine dynamische Art und Weise tun möchten, was Sie sind, besuchen Sie diesen Beitrag - http://stackoverflow.com/questions/32210193/run-the-same-query-against-multiple-tables-without-dynamic-sql –

+0

Ist es für uns möglich, SQL-Skript zwischen Tabelle der Tabellennamen wie SELECT * FROM [table_01_01_2016] als WHERE VORHANDEN nehmen (SELECT 1 VON table_30_06_2016 AS b WHERE a.Datetime ZWISCHEN a.Datetime.01/01/2016 UND b.Datetime.03/01/2016 ); –

Verwandte Themen