>Ho 3 tabelle contenenti costi (Tabella_Assicurazione, Tabella_Ammortamento,
>Tabella_Gasolio).
Ciao Emilia,
come vedi questo forum è dedicato a diversi DBMS, quindi per ricevere una risposta precisa alla tua domanda dovresti come prima cosa dirci quale DBMS stai utilizzando.
Inoltre sarebbe molto utile (e spesso indispensabile) avere i comandi DDL delle tabelle, alcune righe di prova (INSERT INTO) ed il result set finale che si vuole ottenere.
Ma ora veniamo a noi
Sia Access che SQL Server dispongono dell'operatore UNION [ALL] che permette di combinare i result set di più query.
L'esempio che ti propongo è stato preparato in SQL Server 2005:
USE tempdb;
GO
CREATE TABLE dbo.Assicurazione(
AssicurazioneID int NOT NULL IDENTITY PRIMARY KEY,
Importo smallmoney NOT NULL
);
GO
CREATE TABLE dbo.Ammortamento(
AmmortamentoID int NOT NULL IDENTITY PRIMARY KEY,
Importo smallmoney NOT NULL
);
GO
CREATE TABLE dbo.Gasolio(
GasolioID int NOT NULL IDENTITY PRIMARY KEY,
Importo smallmoney NOT NULL
);
GO
INSERT dbo.Assicurazione VALUES(10);
INSERT dbo.Assicurazione VALUES(20);
INSERT dbo.Assicurazione VALUES(30);
INSERT dbo.Ammortamento VALUES(100);
INSERT dbo.Ammortamento VALUES(200);
INSERT dbo.Ammortamento VALUES(300);
INSERT dbo.Gasolio VALUES(1000);
INSERT dbo.Gasolio VALUES(2000);
INSERT dbo.Gasolio VALUES(3000);
GO
/* Esempio funzionante in Access/SQL Sever 7.0 - 2000 */
SELECT SUM(Q.Importo) AS ImportoTotale
FROM (
SELECT Importo
FROM dbo.Assicurazione
UNION ALL
SELECT Importo
FROM dbo.Ammortamento
UNION ALL
SELECT Importo
FROM dbo.Gasolio
) AS Q
GO
/* Output:
ImportoTotale
---------------------
6660,00
(1 row(s) affected)
*/
/* Se utilizzi SQL Server 2005 puoi ricorrere ad una CTE */
WITH Importi(Importo)
AS (
SELECT Importo
FROM dbo.Assicurazione
UNION ALL
SELECT Importo
FROM dbo.Ammortamento
UNION ALL
SELECT Importo
FROM dbo.Gasolio
)
SELECT SUM(Importo) AS ImportoTotale
FROM Importi;
GO
/* Output:
ImportoTotale
---------------------
6660,00
(1 row(s) affected)
*/
DROP TABLE dbo.Assicurazione, dbo.Ammortamento, dbo.Gasolio
Maggiori dettagli li trovi sui Books Online:
"UNION (Transact-SQL)"
http://msdn2.microsoft.com/it-it/library/ms180026.aspx
"WITH common_table_expression (Transact-SQL)"
http://msdn2.microsoft.com/it-it/library/ms175972.aspx
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org