Problème avec une requete GROUP BY

Problème avec une requete GROUP BY - SQL/NoSQL - Programmation

Marsh Posté le 13-04-2011 à 23:58:25    

Bonjour,
 
j'ai un problème dans ma req Sql, ma requête est la suivante :

  • SELECT SUM(Qte) AS Qté, Des, Pu, SUM(Somme) AS Somme, Etat, Mode, Nom, Date_Entre

FROM dbo.Commande
WHERE (Type = 'Client')
Group By Des
 
le problème lors ce que j'exécute cette requête il m'affiche le problème suivant :
La colonne Pu n'est pas valide dans la liste de sélection car elle n'est pas contenu dans une fonction d'agrégation ou dans group by
 
j'ai intégré tout les champs après le GROUP BY mais le résultat n'est pas ce que je veux avoir car je veux un Group By que par le champ Des
 
Merci

Reply

Marsh Posté le 13-04-2011 à 23:58:25   

Reply

Marsh Posté le 14-04-2011 à 00:00:42    

Tres bien, et comment veut tu aggreger les autres champs, parce que si tu veux les afficher, il va falloir savoir comment.

Reply

Marsh Posté le 14-04-2011 à 00:03:25    

:( je veux les afficher oui mes en fonction de le champ Des car si j'ajoute a Group By Des  les autre champs ce n'est pas ce que je veux :( comme résultat

Reply

Marsh Posté le 14-04-2011 à 00:35:35    

c'est a dire ? donne un peu plus de details, mais tu es oblige dans ce cas d'utiliser une fonction d'aggregation ...  

Reply

Marsh Posté le 14-04-2011 à 00:42:21    

ok alors j'ai une table commande d'où je veux créer une vue afin d'avoir toutes les opérations effectuées dans un jour j.
alors ce que je veux créer c'est une requête qui contient :
- Nombre d'article vendu.
- Désignation
- Prix unitaire
- Total
- Date
cette requête est la suivante :  
    * SELECT SUM(Qte) AS Qté, Des, Pu, SUM(Somme) AS Somme, Date_Entre  
From Commande
Group By Des,Pu,Qte,Date_Entre
ici la requête me retourne un resultat qui est groupé par cet ensemble de champs, moi je veux un group by que par le champ Des

Reply

Marsh Posté le 14-04-2011 à 10:33:48    

michimichid a écrit :

ok alors j'ai une table commande d'où je veux créer une vue afin d'avoir toutes les opérations effectuées dans un jour j.
alors ce que je veux créer c'est une requête qui contient :
- Nombre d'article vendu.
- Désignation
- Prix unitaire
- Total
- Date
cette requête est la suivante :
    * SELECT SUM(Qte) AS Qté, Des, Pu, SUM(Somme) AS Somme, Date_Entre
From Commande
Group By Des,Pu,Qte,Date_Entre
ici la requête me retourne un resultat qui est groupé par cet ensemble de champs, moi je veux un group by que par le champ Des

 

Et comment tu veux qu'il choisisse ce qu'il doit y mettre dans les autres champs non-agrégés, ton sgbd, si tu lui dis pas?[:el g]


Message édité par skeye le 14-04-2011 à 10:33:57

---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 14-04-2011 à 10:48:28    

comme dit juste avant tu te poses pas la bonne question.
tu groupes par DES, ce qui doit etre la description mais tu veux afficher des PU qui seront probablement différents dans une meme ligne.
 
deja DES si ce n'est pas une PK c'est super bancale comme approche et ca explique pourquoi ta requete est pas top, si c'etait une PK (article_id par exemple) le group by avec tous les champs te rendrait le resultat attendu.
 
Si ce n'est pas le cas le PU peut etre différent donc tu devrais sortir le AVG(PU) et/ou l'ecart type (MIN(PU),MAX(PU))
 
 
 
 
 


---------------
Plop !
Reply

Sujets relatifs:

Leave a Replay

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