Comment utiliser Si d'Autre Condition dans la Clause where en SQL Server pour les Colonnes de Date?
Je veux utiliser si d'autre dans la condition where de la Date Coulmns. En fait ce que je veux faire est:
J'ai un tableau, qui, ayant deux colonnes, CreatedDate et LastModifiedDate. Maintenant ce que je veux vérifier dans la procédure Stockée est:
si LastUpdateDate est null, alors il va vérifier pour CreatedDate.
Voici ma requête:
SELECT isnull(SSA.UpdateDateTime,
isnull(SSA.CreateDateTime,'')) as LastUpdateAnswerDateTime
from SI_SurveySiteAnswer SSA
WHERE SSA.UpdateDateTime IS NOT NULL
Il y a un autre numéro de table dans les jointures, je suis juste coller la requête requise uniquement. comment puis-je aller pour le vérifier, je suis totalement confus.
Merci de m'aider..
Mise à JOUR:
J'ai écris le code ci-dessous, s'il vous plaît confirmer si c'est la bonne façon de l'utiliser Si dans où
SELECT isnull(SSA.UpdateDateTime,
isnull(SSA.CreateDateTime,'')) as LastUpdateAnswerDateTime
from SI_SurveySiteAnswer SSA
WHERE SSA.UpdateDateTime = ISNULL(SSA.UpdateDateTime,SSA.CreateDateTime)
Je pense que je n'ai pas pu faire mon exigence très clair au premier rendez-vous, laissez-moi vous expliquer ici..
j'ai une question de l'enquête table de réponse, je veux envoyer un email de notification si la question a déjà été répondu, maintenant, la réponse peut répondit d'un seul coup, dans ce cas createddate aura de la valeur de la updateddatetime,
Deuxième cas est:
la réponse est en cours de mise à jour dans la deuxième aller, alors j'ai besoin de vérifier pour la LastUpdateDateTime..
C'est ce que je veux faire dans la requête.
- peut-être le besoin d'u à l'utilisation de fusionner
- pouvez-vous donner un exemple.. s'il vous plaît
- Je n'ai pas votre logique u ont utilisé
WHERE SSA.UpdateDateTime IS NOT NULL
alors qu'est-ce que le besoin deNULL check
pour les mêmes dansselect
- je veux obtenir la valeur de date par défaut si la valeur est null pour la colonne, même je sais que j'ai appliqué dans la condition where. juste pour une logique du truc..
- Vous dites que vous voulez vérifier
CreatedDate
siLastUpdateDate
est nul, mais qu'est-ce que vous voulez vérifier? Le code que vous avez écrit dans lawhere
n'a pas de sens, parce que siUpdatedateTime
n'est pas null, alors il va certainement être égal à lui-même (si vous avez un mannequin comparaison équivalente à1=1
), et si c'est null, alors il ne peut pas être égal à rien. - merci de lire ma mise à jour de question, j'ai ajouté la description de mon exigence
- Allez-vous comparer ce CreateDate ou UpdateDateTime en vous stockez de la procédure paramètre ou si vous voulez juste pour vérifier le champ contient une valeur.
- voulez juste pour vérifier si la colonne a de la valeur .. reste logique est mis en œuvre dans le Code...
- Si la logique est mise en œuvre dans le code, il suffit de sélectionner les deux colonnes et le tri dans le code...
- Cela voudrait dire que vous récupère tous les enregistrements dans la table. Vous souhaitez filtrer le résultat dans la base de données, pas dans le code.
- Si une réponse n'a pas été fourni comment exister comme une ligne dans la table de réponse à tout? c'est à dire NULLE date de création ==> la ligne n'a pas été créé
Vous devez vous connecter pour publier un commentaire.
Vous n'avez pas besoin de tout
if
/else
fonctionnalité, il suffit d'utiliser laor
opérateur de vérifier que ce soit n'est pas nulle:Vous pouvez utiliser FUSIONNENT si vous souhaitez cette fonctionnalité, voici quelques sites pour votre référence.
http://www.mssqltips.com/sqlservertip/1521/the-many-uses-of-coalesce-in-sql-server/
http://sqlmag.com/t-sql/coalesce-vs-isnull
vous pouvez utiliser
case
WHERE SSA.UpdateDateTime IS NOT NULL
, il n'envisage pas deSSA.CreateDateTime
à tous.Essayez de cas.
WHERE SSA.UpdateDateTime IS NOT NULL
, il n'envisage pas deSSA.CreateDateTime
à tous.