>Giorgio, grazie.. ma non funziona la colonna per la terza tabella
>è uguale alla seconda.
La query di Giorgio funziona alla perfezione:
USE tempdb;
GO
CREATE TABLE dbo.tab1 (Campo1 int, Campo2 int);
CREATE TABLE dbo.tab2 (Campo1 int, Campo2 int);
CREATE TABLE dbo.tab3 (Campo1 int, Campo2 int);
GO
INSERT INTO dbo.tab1 VALUES (10, 1003);
INSERT INTO dbo.tab1 VALUES (20, 1123);
INSERT INTO dbo.tab1 VALUES (30, 1345);
INSERT INTO dbo.tab1 VALUES (40, 1456);
INSERT INTO dbo.tab2 VALUES (20, 2322);
INSERT INTO dbo.tab2 VALUES (30, 2112);
INSERT INTO dbo.tab2 VALUES (50, 2563);
INSERT INTO dbo.tab2 VALUES (60, 2879);
INSERT INTO dbo.tab3 VALUES (10, 3422);
INSERT INTO dbo.tab3 VALUES (20, 3812);
INSERT INTO dbo.tab3 VALUES (50, 3983);
INSERT INTO dbo.tab3 VALUES (90, 3998);
GO
SELECT
COALESCE(T1.Campo1, T2.Campo1, T3.Campo1) AS Campo1
, T1.Campo2 AS T1_Campo2
, T2.Campo2 AS T2_Campo2
, T3.Campo2 AS T3_Campo2
FROM dbo.tab1 AS T1
FULL JOIN dbo.tab2 AS T2
ON T1.Campo1 = T2.Campo1
FULL JOIN dbo.tab3 AS T3
ON COALESCE(T1.Campo1, T2.Campo1) = T3.Campo1;
GO
/* Output:
Campo1 T1_Campo2 T2_Campo2 T3_Campo2
----------- ----------- ----------- -----------
10 1003 NULL 3422
20 1123 2322 3812
30 1345 2112 NULL
40 1456 NULL NULL
50 NULL 2563 3983
60 NULL 2879 NULL
90 NULL NULL 3998
(7 row(s) affected)
*/
DROP TABLE dbo.tab1, dbo.tab2, dbo.tab3;
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org