>Io vorrei avere dati del tipo:
>
>12-1-07.......Negozio1........30 (euro).......IVa(10)
>12-1-07.......Negozio1........70 (euro).......Iva(20)
>13-1-07.......Negozio1........40 (euro).......IVa(10)
>13-1-07.......Negozio1........30 (euro).......Iva(20)
>13-1-07.......Negozio1........5 (euro).........IVa(0)
Ecco qua:
USE tempdb;
CREATE TABLE dbo.MovimentiTestate(
Data smalldatetime NOT NULL,
Negozio varchar(10) NOT NULL,
Importo tinyint NOT NULL,
Iva tinyint NOT NULL,
CONSTRAINT PK_MovimentiTestate PRIMARY KEY(Data, Negozio, Importo)
);
INSERT dbo.MovimentiTestate VALUES('20070112', 'Negozio1', 10, 10);
INSERT dbo.MovimentiTestate VALUES('20070112', 'Negozio1', 20, 10);
INSERT dbo.MovimentiTestate VALUES('20070112', 'Negozio1', 30, 20);
INSERT dbo.MovimentiTestate VALUES('20070112', 'Negozio1', 40, 20);
INSERT dbo.MovimentiTestate VALUES('20070113', 'Negozio1', 15, 10);
INSERT dbo.MovimentiTestate VALUES('20070113', 'Negozio1', 25, 10);
INSERT dbo.MovimentiTestate VALUES('20070113', 'Negozio1', 30, 20);
INSERT dbo.MovimentiTestate VALUES('20070113', 'Negozio1', 5, 0);
/* Soluzione per SQL Server 2000 */
SELECT M.Data, M.Negozio, SUM(M.Importo) AS Importo, M.Iva
FROM dbo.MovimentiTestate AS M
JOIN (
SELECT DISTINCT Data, Negozio, Iva
FROM dbo.MovimentiTestate
) AS Q
ON M.Data = Q.Data
AND M.Negozio = Q.Negozio
AND M.Iva = Q.Iva
GROUP BY M.Data, M.Negozio, M.Iva;
/* Soluzione per SQL Server 2005 che fa uso di una
** Common Table Expression
*/
WITH CTE_GetKey AS
(
SELECT DISTINCT Data, Negozio, Iva
FROM dbo.MovimentiTestate
)
SELECT M.Data, M.Negozio, SUM(M.Importo) AS Importo, M.Iva
FROM dbo.MovimentiTestate AS M
JOIN CTE_GetKey AS CTE
ON M.Data = CTE.Data
AND M.Negozio = CTE.Negozio
AND M.Iva = CTE.Iva
GROUP BY M.Data, M.Negozio, M.Iva;
/* Output:
Data Negozio Importo Iva
----------------------- ---------- ----------- ----
2007-01-12 00:00:00 Negozio1 30 10
2007-01-12 00:00:00 Negozio1 70 20
2007-01-13 00:00:00 Negozio1 5 0
2007-01-13 00:00:00 Negozio1 40 10
2007-01-13 00:00:00 Negozio1 30 20
(5 row(s) affected)
*/
DROP TABLE dbo.MovimentiTestate;
>Se proprio vuoi posso anche postare gli script delle tabelle
>ma sono veramente "oscene". Le tabelle non presentano nessu "diagramma"
>cioè nessun vincolo di integrità.
Male, molto male...
>Spero possa bastare. Intanto grazie!
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org