Voici les données de la liste.
Code ItemCount Type Amount
----------------------------------------
B001 1 Dell 10.00
B001 1 Dell 10.00
B001 1 Apple 10.00
B001 2 Apple 20.00
B001 2 Apple 20.00
B114 1 Apple 30.50
B114 1 Apple 10.00
J'ai besoin d'un résultat pour regrouper par code et par type et totaliser le ItemCount
et obtenir le grand total du Amount
dans chaque ligne.
Est-ce possible?
Code ItemCount Type Amount
----------------------------------------
B001 2 Dell 20.00
B001 5 Apple 50.00
B114 2 Apple 40.50
S'il vous plaît essayez:
SELECT
Code,
SUM(ItemCount) ItemCount,
Type,
SUM(Amount) Amount
FROM
YourTable
GROUP BY Code, Type
ORDER BY Code
Cela ressemble à des devoirs.
(Je jure que je pensais que cela était étiqueté comme MySQL lorsque j'ai regardé la question pour la première fois, mais le titre montre clairement MS SQL)
Pour MySQL, cette requête renverra le jeu de résultats spécifié:
SELECT t.Code
, SUM(t.ItemCount) AS ItemCount
, t.Type
, s.Amount AS Amount
FROM mytable t
CROSS
JOIN ( SELECT SUM(r.Amount) AS Amount
FROM mytable r
) s
GROUP
BY t.Code
, t.Type
ORDER BY t.Code ASC, t.Type DESC
Pour les autres bases de données, supprimez pour MySQL les backticks des alias de colonne.
Si vous devez conserver la casse, pour Oracle, les identifiants sont placés entre guillemets. Pour SQL Server, les identificateurs sont placés entre crochets. Pour MySQL, les identifiants sont placés entre guillemets.
Vous pouvez essayer cette solution plus simple:
select Code,sum(ItemCount),Type,sum(Amount) from table group by code,type
Comprendre le "regroupement" serait utile
Vous pouvez essayer cette requête:
SELECT Code,SUM(ItemCount) AS ItemCount,Type,SUM(Amount) AS Amount
FROM
table
GROUP BY Code, Type
Cela vous donnera un résultat correct. Vous devez regrouper par Code
et Type
et non ItemCount
Les montants que vous donnez diffèrent des exemples de données, mais cela fonctionne pour les valeurs des exemples de données:
SELECT Code, SUM(ItemCount) AS ItemCount, [Type], SUM(Amount) AS Amount
FROM dbo.TestSubs GROUP BY Code,[Type] ORDER BY Code
Si je comprends bien que le total réel de chaque ligne est le produit du nombre d'articles et du montant, vous pouvez utiliser le code ci-dessous. Sinon, utilisez le code de @ Abu.
;WITH cte AS
(
SELECT Code, ItemCount, Type, Amount, ItemCount * Amount AS TotalAmount FROM <Table>
)
SELECT
Code,
SUM(ItemCount),
Type,
SUM(TotalAmount)
FROM cte
GROUP BY Code, Type