Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1584 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [SQL] Petit problème -> ...not contained in an aggregate function...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[SQL] Petit problème -> ...not contained in an aggregate function...

n°1206476
le_duc
PlaTyPuS
Posté le 24-09-2005 à 13:56:18  profilanswer
 

:hello:  
 
Comment je peux faire ca pour que ca marche ??
 

Code :
  1. SELECT LEFT(noRef, 4) + RIGHT(MAX(noRef), 6)+1 FROM Personnes


 
Erreur obtenue:

Code :
  1. Server: Msg 8118, Level 16, State 1, Line 1
  2. Column 'Personnes.noRef' is invalid in the select list because it is not contained in an aggregate function and there is no GROUP BY clause.


 
J'ai bien trouvé ca comme solution, mais ca me retourne plusieurs lignes...

Code :
  1. SELECT LEFT(noRef, 4) + CAST((SELECT MAX(RIGHT(noRef, 6))+1 FROM Personnes) AS VARCHAR) FROM Personnes


 
Merci pour vos réponses
 
++


Message édité par le_duc le 24-09-2005 à 13:57:52
mood
Publicité
Posté le 24-09-2005 à 13:56:18  profilanswer
 

n°1206479
Beegee
Posté le 24-09-2005 à 14:07:06  profilanswer
 

Dis en français ce que tu veux ... et on pourra te montrer ton erreur.

n°1206495
le_duc
PlaTyPuS
Posté le 24-09-2005 à 14:45:18  profilanswer
 

Beegee a écrit :

Dis en français ce que tu veux ... et on pourra te montrer ton erreur.


 
J'ai un numéro de référence pour chaque personne (genre numéro de membre), du type : Z8BB100000
 
J'aimerais prendre le plus grand de ces numéro de ma table, couper les 6 derniers caractère, les caster en INT, ajouter 1 et recoller la chaine au 4 premier caractères (Z8BB).
 
Merci pour l'aide.

n°1206499
Beegee
Posté le 24-09-2005 à 14:54:43  profilanswer
 

Donc tu veux :
- récupérer la ligne ayant la plus grande référence (alphabétiquement !),
- récupérer le nombre formé par les 6 derniers caractères,
- ajouter 1 à ce nombre,
- le concaténer avec les 4 premiers caractères (de la même ligne, donc).
 

Code :
  1. SELECT LEFT(maximum_ref, 4) + CAST((CAST(RIGHT(maximum_ref, 6) AS INT) + 1) AS VARCHAR)
  2. FROM (SELECT MAX(noRef) as maximum_ref FROM Personnes);

n°1206510
le_duc
PlaTyPuS
Posté le 24-09-2005 à 15:39:30  profilanswer
 

oui, c'est exactement ca! mais ca ne marche tjs pas... il me dit "incorrect syntax near ')'"
 

Code :
  1. SELECT (LEFT(noRef, 4) + CAST((CAST(RIGHT(noRef, 6) AS INT) + 1) AS VARCHAR)) FROM (SELECT MAX(noRef) FROM Personnes)


 
y'a tellement de parenthèses, on s'en sort plus :D
 
edit: je viens de check les parenthèses et ca à l'air de jouer... y'a qqch d'autre qu'il ne digère pas  :D


Message édité par le_duc le 24-09-2005 à 15:43:41
n°1206576
le_duc
PlaTyPuS
Posté le 24-09-2005 à 18:16:59  profilanswer
 

up

n°1206587
Beegee
Posté le 24-09-2005 à 18:34:10  profilanswer
 

Fais le petit à petit pour voir.
 
Genre :
 
SELECT maximum_ref FROM (SELECT MAX(noRef) as maximum_ref FROM Personnes);
 
puis tu rajoutes le reste ...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [SQL] Petit problème -> ...not contained in an aggregate function...

 

Sujets relatifs
probleme installation SQL Server 2000probleme internet explorer, recherche icone image
Problème à l'envoit de e-mail (via smtp)[SQL Server] Enlever une contrainte IDENTITY d'une table?
SQL et VBAproblème sur méthode SaveAs
Problème de syntaxe SQL ???[MFC/VC++] problème titre dialog
Plus de sujets relatifs à : [SQL] Petit problème -> ...not contained in an aggregate function...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR