>Allora il punto è questo. Io devo avere la somma del costo delle
>penne(SFERA+STILO+REPLAY) ma con la rev massima. Quindi la somma
>solo di queste righe:
>
>Prodotto Modello Revisione Costo
>PENNA SFERA 2 20
>PENNA STILO 2 10
>PENNA REPLAY 1 11
>
>SOMMA TOTALE= 41
Ciao Marco,
Non ho capito quale result set vuoi ottenere.
Quello che hai scritto NON E' relazionale, pertanto non può essere restituito da una query.
Se vuoi solo il totale puoi utilizzare la seguente query:
USE tempdb;
CREATE TABLE dbo.Prodotti(
Prodotto varchar(5) NOT NULL,
Modello varchar(6) NOT NULL,
Revisione tinyint NOT NULL,
Costo tinyint NOT NULL
);
INSERT dbo.Prodotti VALUES
('PENNA', 'SFERA', 1, 10)
, ('PENNA', 'SFERA', 2, 20)
, ('PENNA', 'SFERA', 0, 15)
, ('PENNA', 'STILO', 2, 10)
, ('PENNA', 'STILO', 1, 13)
, ('PENNA', 'REPLAY', 0, 10)
, ('PENNA', 'REPLAY', 1, 11);
WITH CTE_GetKey AS
(
SELECT Prodotto, Modello, MAX(Revisione) AS Revisione
FROM dbo.Prodotti
GROUP BY Prodotto, Modello
)
SELECT SUM(P.Costo) AS Totale
FROM dbo.Prodotti AS P
JOIN CTE_GetKey AS C
ON P.Prodotto = C.Prodotto
AND P.Modello = C.Modello
AND P.Revisione = C.Revisione;
/* Output:
Totale
-----------
41
(1 row(s) affected)
*/
DROP TABLE dbo.Prodotti;
>Vi ringrazio enormemente già da subito qualora mi possiate aiutare!
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org