2017-10-20 4 views
-1

Hier ist was ich versuche, ein neues CTE zu erstellen und alles aus currentWindow auszuwählen, wenn irgendwelche Daten darin vorhanden sind, wenn nicht das CTE alles von PastWindows enthalten sollte.Wie kann ich "auswählen, wenn vorhanden" oder "andere auswählen" auswählen?

currentWindow as (
select * from Window oew 
where oew.StartDate <= GETDATE() and oew.EndDate >= GETDATE() 
) 
    , PastWindows as 
(
     select * from Window oew 
     where oew.StartDate between DATEADD(YYYY, -1, GetDate()) AND GETDATE() 
     OR oew.EndDate between DATEADD(YYYY, -1, GetDate()) AND GETDATE() 
) 

So etwas wie dieses

FinalOEWindoToUse as 

(

)

Ich verstehe, dass dies mit einer Case-Anweisung für eine einzelne Spalte kann getan werden, aber in diesem Fall habe ich alle wollen die Spalten aus Tabelle A, wenn Daten vorhanden sind, und alle Daten aus Tabelle B, falls vorhanden,

+1

Verwenden Sie MS SQL Server oder Oracle? Markieren Sie keine nicht betroffenen Produkte. – jarlh

+0

Bearbeitete den Post, SQL-Server. –

+0

Sie wollen also die Daten von diesen beiden Abfragen? –

Antwort

0

Etwas wie dieses:

IF EXISTS(SELECT NULL FROM Window oew WHERE oew.StartDate <= GETDATE() and oew.EndDate >= GETDATE()) 
    SELECT * FROM Window oew WHERE oew.StartDate <= GETDATE() and oew.EndDate >= GETDATE() 
ELSE 
    SELECT * FROM Window oew WHERE oew.StartDate BETWEEN DATEADD(YYYY, -1, GetDate()) AND GETDATE() OR oew.EndDate between DATEADD(YYYY, -1, GetDate()) AND GETDATE() 
Verwandte Themen