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

Langage SQL Discussion :

[SQL Server] Donnee de type text dans un GROUP BY non permis


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 93
    Points : 47
    Points
    47
    Par défaut [SQL Server] Donnee de type text dans un GROUP BY non permis
    Bonjour,

    Voila j'ai 3 tables:

    ------------------------------
    TABLE_COST
    ------------------------------
    TASK_ID | MONTH | COST
    -----------------
    1 | JAN | 25
    1 | FEB | 15
    1 | MARCH | 10

    ------------------
    TABLE_TASK
    -----------------
    TASK_ID | Name
    -----------------
    1 | myTask
    -----------------


    ---------------------
    TABLE_COMMENTS
    ---------------------
    TASK_ID | COMMENT
    -----------------------
    1 | test de commentaires
    -----------------------

    Voici ma requete:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT TA.NAME, SUM(CO.COST), CT.COMMENT 
    FROM TABLE_TASK TA, TABLE_COST CO, TABLE_COMMENT CT
    WHERE TA.TASK_ID = CO.TASK_ID
    AND TA.TASK_ID = CT.TASK_ID
    GROUP BY TA.NAME
    En fait je cherche savoir combien ma tache va me couter, dans l'exemple ci-dessus je devrais avoir le resultat suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    myTask  |  50  |  test de commentaires
    Mais voici l'erreur que j'obtiens:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Column 'CT.COMMENT' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
    Donc je rajoute 'CT.COMMENT' dans le GROUB BY mais voila ce que j'obtiens:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    The text, ntext, and image data types cannot be compared or sorted, except when using IS NULL or LIKE operator.
    Est-ce que vous auriez une solution a ce probleme, par avance merci

  2. #2
    Membre actif Avatar de TheRussian
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 200
    Points : 241
    Points
    241
    Par défaut
    Bonjour,

    Est-ce qu'on peut voir la requête qui fait la deuxième erreur. C'est bien la même que ci-dessous ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT TA.NAME, SUM(CO.COST), CT.COMMENT 
    FROM TABLE_TASK TA, TABLE_COST CO, TABLE_COMMENT CT 
    WHERE TA.TASK_ID = CO.TASK_ID 
    AND TA.TASK_ID = CT.TASK_ID 
    GROUP BY TA.NAME, CT.COMMENT
    Quel est le SGBD ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 93
    Points : 47
    Points
    47
    Par défaut
    Bonjour,

    Oui c'est bien ca, j'utilise SQL Server 2000. J'ai simplifie volontairement ma requete pour mettre en evidence le probleme sur le forum

    Ma requete officielle est la suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    SELECT 
    CA.WP,
    T.CECODE,
    BE.CEDESC,
    (SELECT SUM(T.COM)),
    T.CLASS,
    (CASE RTRIM(T.CLASS)
    	WHEN 'CB' THEN '001'
    	WHEN 'B1' THEN '002'
    	WHEN 'B2' THEN '003'
    	WHEN 'B3' THEN '004'
    	WHEN 'B4' THEN '005'
    	WHEN 'B5' THEN '006'
    	WHEN 'B6' THEN '007'
    	WHEN 'B7' THEN '008'
    	WHEN 'B8' THEN '009'
    	WHEN 'B9' THEN '010'
    	ELSE T.CLASS
       END) AS "SEQUENCE_NUMBER"
    --NT.NOTE_TEXT
     
    FROM
    CAWP CA, TPHASE T, CALCDESC BE, COB_NTX NT
    WHERE CA.PROGRAM = '2006HSBC'
    AND CA.WP = 'BLO027/003'
    AND CA.CAWPID = T.CAWPID
    AND CA.PROGRAM = T.PROGRAM
    AND BE.CALCFILE = '2006BE'
    AND BE.CECODE = T.CECODE
    AND NT.DIR_ID = CA.PROGRAM
    AND NT.FK_ID = CA.CAWPID
    AND T.CLASS IN ('CB')
    AND CA.C9 = 'UPDATE'
    GROUP BY CA.WP,
    T.CECODE,
    BE.CEDESC,
    T.CLASS
    --NT.NOTE_TEXT
    Celle-ci fonctionne parfaitement mais des que j'ajoute la ligne de commentaires correspondant a la tache (CA.WP) que vous voyez en commentaire ci-dessus cela ne marche plus et j'obtiens l'erreur enoncee ci-dessus.

    En fait, l'idee ici est la suivante:

    J'ai des taches (CA.WP) sur lesquelles sont affectees des ressources (TE.CECODE). Chaque ressources contient plusieurs couts (T.COM)repartie de facon temporelle dans la table TPHASE. Moi j'ai besoin du prix total, c'est pour cela que j'utilise le SUM(T.COM).
    Encore une fois jusque la tout va bien.

    Maintenant j'ai besoin d'avoir le champ commentaire (NT.NOTE_TEXT) qui est attache a ma tache (CA.WP). C'est actuellement ce qui me pose probleme, si je ne demande pas le cout de ma tache, donc n'utilise pas la fonction d'agregation SUM(T.COM) j'ai bien le commentaire associe a ma tache. Mais je ne peux pas avoir les 2, le cout total et le commentaire, c'est tres genant !!!

    J'espere que mon message initial refletait bien mon reel probleme.

  4. #4
    Membre actif Avatar de TheRussian
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 200
    Points : 241
    Points
    241
    Par défaut
    Je pense que le problème vient de la syntaxe du CASE :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    CASE 
       WHEN RTRIM(T.CLASS)  = 'CB' THEN '001' 
       WHEN RTRIM(T.CLASS)  = 'B1' THEN '002' 
       WHEN RTRIM(T.CLASS)  = 'B2' THEN '003' 
       WHEN RTRIM(T.CLASS) = 'B3' THEN '004' 
       WHEN RTRIM(T.CLASS)  = 'B4' THEN '005' 
       WHEN RTRIM(T.CLASS)  = 'B5' THEN '006' 
       WHEN RTRIM(T.CLASS) = 'B6' THEN '007' 
       WHEN RTRIM(T.CLASS)  = 'B7' THEN '008' 
       WHEN RTRIM(T.CLASS) = 'B8' THEN '009' 
       WHEN RTRIM(T.CLASS)  = 'B9' THEN '010' 
       ELSE T.CLASS 
       END

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 93
    Points : 47
    Points
    47
    Par défaut
    Ba en fait j'ai completement supprimer la colonne avec le case de ma requete et le probleme est le meme!

    J'avoue que la je ne comprend pas

    Help

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 93
    Points : 47
    Points
    47
    Par défaut
    Bon finalement je suis venu a bout de mon probleme en utilisant le code suivant pour mon champ commentaire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CAST(NT.NOTE_TEXT AS nvarchar)
    Merci pour votre aide.
    @+

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

Discussions similaires

  1. Type text dans SQL server
    Par HENRYC dans le forum Développement
    Réponses: 2
    Dernier message: 26/09/2011, 19h04
  2. [SQL server] connaître le type de donnée d'un champ
    Par sam35 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 04/07/2006, 16h30
  3. Réponses: 3
    Dernier message: 10/08/2005, 12h11
  4. [SQL server] Comment Fusionner des données dans une requête
    Par MoTUmBo dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 27/07/2005, 16h24
  5. [SQL Server] Passage d'un paramètre dans une procédure
    Par navis84 dans le forum Bases de données
    Réponses: 3
    Dernier message: 14/01/2005, 14h19

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