SQL - d'Obtenir la Plus Récente Date De Plusieurs Colonnes
Assumer un ensemble de lignes contenant les éléments suivants
EntryID Name DateModified DateDeleted
-----------------------------------------------
1 Name1 1/2/2003 NULL
2 Name1 1/3/2005 1/5/2008
3 Name1 1/3/2006 NULL
4 Name1 NULL NULL
5 Name1 3/5/2008 NULL
Précisions:
J'ai besoin d'une valeur unique - la plus grande non-nulle de la date à partir de DEUX colonnes. De sorte que le plus grand de tous les dix cellules dans ce cas.
- Demandez-vous pour la plus grande valeur de DateModified ou DateDeleted ou voulez-vous plus de valeur pour chaque colonne?
- cela fait-il une différence? @Thomas - j'ai édité ma question; il suffit d'une valeur de deux colonnes
- Je pense que la raison pour @OMG question est de savoir si l'
GREATEST
la fonction est disponible.
Vous devez vous connecter pour publier un commentaire.
CASE WHEN ISNULL(DateModified, 0) > ISNULL(DateDeleted, 0)
je pensePour MySQL, Postgres, Oracle, utilisez la PLUS grande fonction:
Oracle et MySQL retournera NULL si une valeur NULL est fournie. L'exemple utilise MySQL gestion des valeurs null - mise à jour pour la base de données appropriée.
Une base de données agnostique alternative est la suivante:
GREATEST
fonction, en plus, j'aime votre base de données agnostique solution. =)GREATEST
fonction. Qui rend les choses beaucoup plus facile (en supposant que sa base de données prend en charge)!MAX(GREATEST(...)
2), Sauf que (au moins sur Oracle)GREATEST(some_value, NULL)
retourneNULL
, donc ne serait pas répondre aux besoins spécifiques de l'OP.Comme une solution générale, vous pouvez essayer quelque chose comme ceci:
Il pourrait y avoir des moyens plus faciles, selon la base de données que vous utilisez.
Comment sur;
La réponse dépend de ce que vous voulez vraiment. Si vous voulez simplement la plus récente des deux valeurs de date, alors vous pouvez faire:
Si vous demandez la plus grande valeur de colonne, alors vous pouvez tout simplement faire:
Ci-dessus sont toutes les réponses valables;
Mais je ne sais Pas si cela pourrait fonctionner?
Edit 1:
Tandis que dans la douche ce matin, j'ai eu une autre solution:
Solution 2:
Edit 3:
Merde, juste repéré c'est la même solution que Alex k. soupir...
from table
signifie qu'il va retourner plusieurs lignes.