J'essaie d'obtenir une somme totale de la colonne ItemDetail.Quanity et de la colonne Itemdetail.netprice.netprice. Par exemple, disons que la quantité indiquée est pour chaque élément individuel est de 5, 2 et 4 respectivement. Je me demande si il y a un moyen d'afficher la quantité comme 11 pour un seul groupegroup.itemgroupname
La requête que j'utilise est répertoriée ci-dessous P>
select Location.LocationName, ItemDetail.DOB, SUM (ItemDetail.Quantity) as "Quantity",
ItemGroup.ItemGroupName, SUM (ItemDetail.NetPrice)
from ItemDetail
Join ItemGroupMember
on ItemDetail.ItemID = ItemGroupMember.ItemID
Join ItemGroup
on ItemGroupMember.ItemGroupID = ItemGroup.ItemGroupID
Join Location
on ItemDetail.LocationID = Location.LocationID
Inner Join Item
on ItemDetail.ItemID = Item.ItemID
where ItemGroup.ItemGroupID = '78' and DOB = '11/20/2019'
GROUP BY Location.LocationName, ItemDetail.DOB, Item.ItemName,
ItemDetail.NetPrice, ItemGroup.ItemGroupName
3 Réponses :
Nous ne pouvons pas être certains sans voir des données d'échantillonnage. Mais je soupçonne que vous devez supprimer des champs de votre Généralement, vous ne groupez pas par colonne que vous appliquez une fonction agrégée dans la SELECT - comme dans Je pense que vous devez revenir à des bases et lire sur ce que groupe par code> Clause - probablement item.itemname code> et itemdetail.netprice p>. P>.
somme (itemdetail.netprice) code>. Et ce n'est pas très courant, dans mon expérience, de regrouper par colonnes qui ne sont pas incluses dans la liste Select - comme vous le faites avec item.itemname code>. P>.
groupe par code> fait. P>
Tout d'abord bienvenue au débordement ... p>
Deuxièmement: la réponse va être "cela dépend" Chaque fois que vous agrégez de données, vous devez regrouper par les autres champs de la requête et vous l'avez dans la requête. Le gotcha est ce qui se passe lorsque les données sont réparties sur plusieurs emplacements. P>
Ma suggestion est de repenser votre problème et de voir si vous avez vraiment besoin de ces autres champs de la requête. Cela dépendra de ce que la personne utilisant les données veut vraiment savoir. P>
Avoir-t-il besoin de savoir combien d'articles X Il y a ou a-t-il besoin de savoir que l'article X est réparti sur trois sites? p>
Vous pourriez trouver que vous êtes meilleur avec deux petites requêtes. p>
Quand j'exécute la requête, c'est ce que je sors: Nom de l'emplacement Dob Quantité ÉlémentGroupname Column1 Numéro de site 11/20/2019 2 FSR - Tout avec bar à salade 43.98 Numéro de site 11/20/2019 1 FSR - Tout avec salade Bar 0 Numéro de site 11/20/2019 2 FSR - Tout avec salade Bar 21.98 Ce que je voudrais, c'est: Nom de l'emplacement Dob Quantité ÉlémentGroupname Colonne1 Numéro de site 11/20/2019 5 FSR - Tout avec salade Bar 65.96 Je cherche essentiellement à obtenir la quantité et colonne1 comme une seule ligne.
Si vous utilisez SQL Server 2012, vous pouvez utiliser la Sommation sur la partition pour afficher le. Détails et agrégats dans la même requête. P>
Somme (SalesyTD) sur (commande par datePart (yy, modifiéddatedate), 1) p>
lien: HTTPS: //docs.microsoft.com/en-us/sql/t-sql/functions/sum-Transact-SQL?View=SQL-SERVER-VER15 P>
Vous collaborez généralement par les mêmes colonnes que vous sélectionnez, à l'exception de ceux qui sont des arguments à définir la fonction.
Montrez-nous des données de table d'échantillons et le résultat attendu - tout comme texte formaté, pas d'images. Et jetez un coup d'œil à exemple de reproductible minimal .
Commencez par supprimer tout, mais
itemgroup.itemgroupName code> à partir de votregroupe par code> Clause. SupprimerEmplacement.LocationNameName code> etitemdetail.dob code> à partir de votre clause SELECT.