IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

Problème pour évaluer un alias avec DATEDIFF


Sujet :

Développement SQL Server

  1. #1
    Membre régulier Avatar de Stephane_br
    Inscrit en
    Septembre 2005
    Messages
    222
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 222
    Points : 83
    Points
    83
    Par défaut Problème pour évaluer un alias avec DATEDIFF
    Bonjour,
    j'ai un souci, je souhaite ne faire remonter que les lignes d'une table dont un champ contenant une date qui doit être antérieure de 3 ans ou plus comparé à la date du jour.

    J'ai essayé ceci mais cela me remonte une erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT     ID, DATEDIFF(year, DateSaisie, '2011-09-14 00:00:00') AS NbYear
    FROM         MaTable
    WHERE     (NbYear>= 3)
    Erreur Sql : Nom de colonne invalide 'NbYear'

    A priori il ne me reconnait pas l'alias NbYear que je déclare pourtant dans ma requête.

    Pouvez-vous m'aider s'il vous plait ?

    Merci par avance.

  2. #2
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 153
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut
    Les alias de colonne ne peuvent être utilisés qu'en dehors de la requête, ou dans la clause order by.

    Il faut donc remettre toute ton évaluation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT     ID, DATEDIFF(year, DateSaisie, '2011-09-14 00:00:00') AS NbYear
    FROM         MaTable
    WHERE     (DATEDIFF(year, DateSaisie, '2011-09-14 00:00:00')>= 3)
    Ne t'inquiète pas, le SGBD n'est pas stupide, et comprend qu'il s'agit de la même chose : il ne l'avaluera en réalité qu'une seule fois.
    On ne jouit bien que de ce qu’on partage.

  3. #3
    Membre régulier Avatar de Stephane_br
    Inscrit en
    Septembre 2005
    Messages
    222
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 222
    Points : 83
    Points
    83
    Par défaut
    Super !

    En fait, le premier n'est donc pas nécessaire à ce que je constate grâce à ta réponse. Sauf si bien sûr je souhaite faire remonter le nombre d'années évalué.

    Et bien merci beaucoup !!
    ça fonctionne nickel.

    Merci encore.

  4. #4
    Membre chevronné Avatar de Jinroh77
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2006
    Messages
    1 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Février 2006
    Messages : 1 964
    Points : 2 145
    Points
    2 145
    Par défaut
    Attention, comme cela vous perdez tout l’intérêt d'un index potentiel sur votre colonne...
    Utilisez plutôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT     ID, DATEDIFF(year, DateSaisie, '2011-09-14 00:00:00') AS NbYear
    FROM         MaTable
    WHERE     DateSaisie <= DATEADD(year, -3, getdate())
    Alexandre Chemla - Consultant MS BI chez Masao

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [JDOM] Problème pour lire les noeuds avec JDOM
    Par Eclix dans le forum Format d'échange (XML, JSON...)
    Réponses: 7
    Dernier message: 26/05/2014, 18h11
  2. [Upload] Problème pour gestion d'erreur avec class
    Par allserv dans le forum Langage
    Réponses: 2
    Dernier message: 27/12/2005, 13h00
  3. Réponses: 1
    Dernier message: 03/12/2005, 16h17
  4. problème pour faire un insert avec une image
    Par vbcasimir dans le forum Modules
    Réponses: 3
    Dernier message: 02/11/2005, 09h21
  5. Réponses: 1
    Dernier message: 17/05/2004, 11h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo