[SQL] Plus grande date de 2 colonnes

Résolu/Fermé
Messages postés
26
Date d'inscription
lundi 29 mars 2004
Statut
Membre
Dernière intervention
29 mars 2008
-
Messages postés
607
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
31 janvier 2008
-
Bonjour,

je cherche à faire une requete qui me permettrait d'obtenir la plus grande valeur de 2 dates situés dans 2 colonnes différentes.

j'ai donc fait ceci :
SELECT MADATE1,MADATE2,
CASE WHEN MADATE1 > MADATE2 THEN MADATE1
ELSE MADATE2
END AS DATEMAX
FROM MATABLE

Et j'obtiens bien ce que je veux.

Là où j'ai mon problème, c'est que j'ai des valeurs par défaut pour mes dates.
Et je voudrais que:
si MADATE1 = MADATE2 = valeur par défaut, j'affiche un message quelconque.

Merci de votre aide!

7 réponses

Messages postés
607
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
31 janvier 2008
177
SELECT
MADATE1, MADATE2,
CASE
WHEN MADATE1 > MADATE2 THEN MADATE1
WHEN MADATE1 = MADATE2 THEN 'MonMessage'
WHEN MADATE1 = GETDATE() THEN 'C aujourd'hui'
ELSE MADATE2
END AS DATEMAX

FROM MATABLE
Messages postés
26
Date d'inscription
lundi 29 mars 2004
Statut
Membre
Dernière intervention
29 mars 2008
1
Ma date par défaut n'est pas la date du jour mais une date dans le passé (01/01/2003).
Je précise aussi ce que je cherche a obtenir en cas d'égalité :
si MADATE1 = MADATE2 = valeur par défaut alors message
si MADATE1 = MADATE2 <> valeur par défaut alors MADATE1

Alors qu'avec vos requetes,
j'aurai un message dès qu'il y'a égalité des dates, meme si ce n'est pas la date par défaut
Messages postés
392
Date d'inscription
mercredi 12 septembre 2007
Statut
Membre
Dernière intervention
5 septembre 2009
49
et qu'est ce que c'est une date par défaut pour toi ?
Messages postés
392
Date d'inscription
mercredi 12 septembre 2007
Statut
Membre
Dernière intervention
5 septembre 2009
49
Bonjour,

SELECT MADATE1,MADATE2, CASE WHEN MADATE1 > MADATE2 THEN MADATE1
WHEN MADATE1 < MADATE2 THEN MADATE2
ELSE 'EGALE'
END AS DATEMAX
FROM MATABLE
Messages postés
26
Date d'inscription
lundi 29 mars 2004
Statut
Membre
Dernière intervention
29 mars 2008
1
une date que j'inséré lors de la création de mes enregistrements et qui me permet de reperer que ces enregistrements n'ont jamais été modifiés.
En résumé, ce que je cherche à obtenir pour l'égalité c'est :
si MADATE1 = MADATE2 = 01/01/2003 alors message
si MADATE1 = MADATE2 <> 01/01/2003 alors MADATE1
Messages postés
26
Date d'inscription
lundi 29 mars 2004
Statut
Membre
Dernière intervention
29 mars 2008
1
c'est bon j'ai trouvé ma requete!

SELECT MADATE1,MADATE2, CASE WHEN MADATE1 > MADATE2 THEN MADATE1
WHEN MADATE1 < MADATE2 THEN MADATE2
WHEN MADATE1 like to_date('01/01/2003,'DD/MM/YYYY') THEN 'MESSAGE'
ELSE MADATE1
END AS DATEMAX
FROM MATABLE

merci pour votre aide
Messages postés
607
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
31 janvier 2008
177
SELECT
MADATE1, MADATE2,
CASE
WHEN MADATE1 > MADATE2 THEN MADATE1
WHEN MADATE1 = MADATE2 AND Convert(varchar(10), MADATE1, 103) = '01/01/2003 ' THEN 'MonMessage'
ELSE MADATE2
END AS DATEMAX

FROM MATABLE
Messages postés
607
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
31 janvier 2008
177
Attention : 'LIKE' est très lent. Si t'a plusieurs 1000 lignes a traiter vaut mieux utiliser '='.