Problem with query in SQL Server I get an error with this query, how can "group by" column by codart and sum only the column Quantita:



Query:

SELECT 
    Articolo.CodArt, Articolo.Prezzo,
    DistintaSemplice.Quantita,
    ROUND((DistintaSemplice.Quantita * Articolo.Prezzo), 2) as Totale
FROM 
    [Fatture].[dbo].[SottoCapitolo]
INNER JOIN
    Fatture.dbo.Distinta ON Distinta.IdDistinta = SottoCapitolo.Codice 
INNER JOIN 
    Fatture.dbo.DistintaSemplice ON DistintaSemplice.IdDistinta = Distinta.IdDistinta
INNER JOIN
    Fatture.dbo.Articolo ON Articolo.IdArticolo = DistintaSemplice.IdArticolo
WHERE
    SottoCapitolo.Tipo = 'Distinta'
ORDER BY 
    CodArt
You can use your actual query as a subquery and GROUP BY CodArt, Prezzo.

SELECT CodArt, Prezzo, SUM(Quantita) AS Quantita, SUM(Totale) AS Totale
FROM (
        SELECT 
            Articolo.CodArt,
            Articolo.Prezzo,
            DistintaSemplice.Quantita,
            ROUND((DistintaSemplice.Quantita*Articolo.Prezzo),2) AS Totale
        FROM [Fatture].[dbo].[SottoCapitolo]
            INNER JOIN Fatture.dbo.Distinta ON Distinta.IdDistinta=SottoCapitolo.Codice 
            INNER JOIN Fatture.dbo.DistintaSemplice ON DistintaSemplice.IdDistinta=Distinta.IdDistinta
            INNER JOIN Fatture.dbo.Articolo ON Articolo.IdArticolo=DistintaSemplice.IdArticolo
        WHERE SottoCapitolo.Tipo='Distinta'
    )
GROUP BY CodArt, Prezzo;


If you want to calculate Totale in function of SUM(Quantita):

;WITH Qty AS
(
    SELECT 
        DistintaSemplice.IdArticolo,
        SUM(DistintaSemplice.Quantita) as Quantita,
    FROM [Fatture].[dbo].[SottoCapitolo]
        INNER JOIN Fatture.dbo.Distinta ON Distinta.IdDistinta=SottoCapitolo.Codice 
        INNER JOIN Fatture.dbo.DistintaSemplice ON DistintaSemplice.IdDistinta=Distinta.IdDistinta
    WHERE SottoCapitolo.Tipo='Distinta'
)
SELECT
    Articolo.CodArt,
    Articolo.Prezzo,
    Qty.Quantita,
    ROUND((Qty.Quantita*Articolo.Prezzo),2) AS Totale
FROM Fatture.dbo.Articolo 
    LEFT JOIN Qty ON Articolo.IdArticolo=Qty.IdArticolo
ORDER BY Articolo.CodArt;