A voir également:
- Créer une procédure avec SUM()....Group By
- Comment créer un groupe whatsapp - Guide
- Créer un compte gmail - Guide
- Créer un compte google - Guide
- Créer une liste déroulante excel - Guide
- Créer une adresse hotmail - Guide
1 réponse
Reivax962
Messages postés
3671
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
1 oct. 2012 à 16:24
1 oct. 2012 à 16:24
Bonjour,
Contrairement à MySQL, qui est très (trop) permissif à ce sujet, T-SQL impose que tous les champs présents dans le SELECT, hors champs d'agrégation, soient spécifiés dans le GROUP BY.
C'est d'ailleurs ce que t'indique ton message d'erreur.
Donc si je reprends ton SELECT :
dbo.TB_Produit.IdProd -> Doit être rajouté au GROUP BY
dbo.TB_Produit.RefProd -> OK - Déjà dans le GROUP BY
dbo.TB_Produit.DesigProd -> Doit être rajouté au GROUP BY
dbo.TB_Produit.SeuilProd -> Doit être rajouté au GROUP BY
dbo.TB_Produit.PuVte -> Doit être rajouté au GROUP BY
SUM(dbo.TB_Produit_Mag.StockProd) -> OK - fonction d'agrégation
dbo.TB_Fournisseur_Produit.RefProdFour -> Doit être rajouté au GROUP BY
dbo.TB_Fournisseur_Produit.PuFour -> Doit être rajouté au GROUP BY
dbo.TB_Fournisseur_Produit.IdFour -> Doit être rajouté au GROUP BY
dbo.TB_Produit.Vte -> Doit être rajouté au GROUP BY
Ton group by devient donc :
GROUP BY dbo.TB_Produit.IdProd, dbo.TB_Produit.RefProd, dbo.TB_Produit.DesigProd, dbo.TB_Produit.SeuilProd, dbo.TB_Produit.PuVte, dbo.TB_Fournisseur_Produit.RefProdFour, dbo.TB_Fournisseur_Produit.PuFour, dbo.TB_Fournisseur_Produit.IdFour,
dbo.TB_Produit.Vte
Xavier
PS : en utilisant des alias de table et en enlevant les « dbo », tu dois pouvoir alléger l'écriture de ta requête :) Mais c'est juste du cosmétique...
Contrairement à MySQL, qui est très (trop) permissif à ce sujet, T-SQL impose que tous les champs présents dans le SELECT, hors champs d'agrégation, soient spécifiés dans le GROUP BY.
C'est d'ailleurs ce que t'indique ton message d'erreur.
Donc si je reprends ton SELECT :
dbo.TB_Produit.IdProd -> Doit être rajouté au GROUP BY
dbo.TB_Produit.RefProd -> OK - Déjà dans le GROUP BY
dbo.TB_Produit.DesigProd -> Doit être rajouté au GROUP BY
dbo.TB_Produit.SeuilProd -> Doit être rajouté au GROUP BY
dbo.TB_Produit.PuVte -> Doit être rajouté au GROUP BY
SUM(dbo.TB_Produit_Mag.StockProd) -> OK - fonction d'agrégation
dbo.TB_Fournisseur_Produit.RefProdFour -> Doit être rajouté au GROUP BY
dbo.TB_Fournisseur_Produit.PuFour -> Doit être rajouté au GROUP BY
dbo.TB_Fournisseur_Produit.IdFour -> Doit être rajouté au GROUP BY
dbo.TB_Produit.Vte -> Doit être rajouté au GROUP BY
Ton group by devient donc :
GROUP BY dbo.TB_Produit.IdProd, dbo.TB_Produit.RefProd, dbo.TB_Produit.DesigProd, dbo.TB_Produit.SeuilProd, dbo.TB_Produit.PuVte, dbo.TB_Fournisseur_Produit.RefProdFour, dbo.TB_Fournisseur_Produit.PuFour, dbo.TB_Fournisseur_Produit.IdFour,
dbo.TB_Produit.Vte
Xavier
PS : en utilisant des alias de table et en enlevant les « dbo », tu dois pouvoir alléger l'écriture de ta requête :) Mais c'est juste du cosmétique...
Modifié par Romys le 1/10/2012 à 16:53
Je ne sais quoi te dire. Merci pour m'avoir de m'avoir délivrer de cette PS qui me fatiguait tant.
Que Dieu te garde le plus longtemps possible.