Sql wie man Tische umschaltet

Ich bin neu in SQL, ich benutze MS server.

Ich habe zwei tische eine von ihnen haben historische ( cdr_hist ) daten andere tabelle haben daten von heute ( cdr_stage ). Mein Skript muss alle 30 Minuten laufen und data aus den letzten 4 Stunden berechnen, aber jede Nacht um 12 alle data bewegen sich bei cdr_hist .

Die Frage ist, wie ich wechseln kann und nehmen data aus der Geschichte Tabelle, wenn Skript um 12:00 Uhr laufen, weil cdr_stage ist leer … Ich versuche dies:

IF OBJECT_ID ('[**CDR_Stage**]') IS NOT NULL BEGIN Select..... From **CDR_Stage** END ELSE Select..... From **CDR_Hist** END 

Aber es funktioniert nicht richtig … Irgendwelche Ideen ??

Sie müssen die datasatz-Existenz statt Tabelle Existenz zu überprüfen

 IF EXISTS (SELECT 1 FROM CDR_Stage) SELECT * FROM CDR_Stage ELSE SELECT * FROM CDR_Hist 

Oder Dynamic Sql

 DECLARE @sql VARCHAR(4000) SET @sql = 'select * from ' + CASE WHEN EXISTS (SELECT 1 FROM CDR_Stage) THEN 'CDR_Stage' ELSE 'CDR_Hist' END EXEC (@sql) 

Keine Notwendigkeit für IFs, das kann mit reinen sql mit UNION und NOT EXISTS() :

 SELECT * FROM CDR_Stage UNION ALL SELECT * FROM CDR_Hist WHERE NOT EXISTS(SELECT 1 FROM CDR_Stage) -- Second select will return data only if first one won't .