2017-10-20 13 views
-1

Voici ce que j'essaie de faire, créer un nouveau CTE et sélectionner tout de currentWindow si toutes les données existent, sinon le CTE devrait contenir tout de PastWindows.Comment puis-je interroger "sélectionnez si existe" sinon "sélectionnez une autre" procédure?

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() 
) 

Quelque chose comme ça

FinalOEWindoToUse as 

(

)

Je comprends que cela peut être fait en utilisant une déclaration de cas pour une seule colonne, mais dans ce cas, je veux tout les colonnes de la table A si les données existent et toutes les données de la table B si elles existent

+1

Utilisez-vous MS SQL Server ou Oracle? Ne pas étiqueter les produits non concernés. – jarlh

+0

Modifié le message, serveur SQL. –

+0

Vous voulez donc les données de ces deux requêtes? –

Répondre

0

Quelque chose comme ceci:

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()