Calcul de la somme des lignes qui ont été regroupées dans SQL

J'ai la requête:

SELECT substring(Code,1,6) as Code
From Table
Group by substring(Code,1,6)
Order By Code

Cependant j'essaye d'ajouter une colonne qui est la somme calculée des rangées qui ont été groupées dans cette requête. Exemple:

Code    Number

S05080A 20

S05080B 20

S70331A 8

S70331B 4

Deviendrait alors:

Code    Sum

S05080  40

S70331  12

J'espère que quelqu'un peut m'aider avec celui-ci, serait très apprécié!

0
Essayez d'ajouter , sum (number) à votre select .
ajouté l'auteur Gordon Linoff, source

5 Réponses

Vous avez déjà travaillé dur - ajoutez simplement SUM (Number) comme une autre colonne et alias

SELECT substring(Code,1,6) as Code, SUM(Number) AS Sum
From Table
Group by substring(Code,1,6)
Order By Code
0
ajouté
declare @t table (Code varchar(10),number int)
insert into @t(code,number)values  ('S05080A',20), ('S05080B',20), ('S70331A',8),('S70331B', 4)

SELECT  SUBSTRING(Code, 1, NULLIF(DATALENGTH(Code)-1,-1)),SUM(number)
From @t
Group by SUBSTRING(Code, 1, NULLIF(DATALENGTH(Code)-1,-1))
Order By SUBSTRING(Code, 1, NULLIF(DATALENGTH(Code)-1,-1))
0
ajouté

Vous pouvez utiliser SUM , comme ci-dessous:

SELECT substring(Code,1,6) as Code, SUM(Number) as Sum
From Table
Group by substring(Code,1,6)
Order By Code
0
ajouté

Vous pouvez utiliser ceci:

CREATE TABLE #codes(code nvarchar(10), number int)

INSERT INTO #codes(code, number)
VALUES(N'S05080A', 20), (N'S05080B', 20), (N'S70331A', 8), (N'S70331B', 4)

-- This is your part
SELECT LEFT(code,6) as code,SUM(number)
FROM #codes
GROUP BY LEFT(code,6)

DROP TABLE #codes
0
ajouté
SELECT substring(Code,1,6) as Code,
       SUM(Number) AS [Sum] -- Add this line

From Table

Group by substring(Code,1,6)

Order By Code
0
ajouté
Ah c'est fantastique, merci. Fonctionne exactement comme je l'avais espéré.
ajouté l'auteur Revokez, source