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

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

Marsh Posté le 24-09-2005 à 13:56:18    

: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
Reply

Marsh Posté le 24-09-2005 à 13:56:18   

Reply

Marsh Posté le 24-09-2005 à 14:07:06    

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

Reply

Marsh Posté le 24-09-2005 à 14:45:18    

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.

Reply

Marsh Posté le 24-09-2005 à 14:54:43    

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);

Reply

Marsh Posté le 24-09-2005 à 15:39:30    

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
Reply

Marsh Posté le 24-09-2005 à 18:16:59    

up

Reply

Marsh Posté le 24-09-2005 à 18:34:10    

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

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed