SQL Server 2008 R2——使用FULL OUTER JOIN實現多表信息匯總


=================================版權聲明=================================

版權聲明:原創文章 謝絕轉載 

請通過右側公告中的“聯系郵箱(wlsandwho@foxmail.com)”聯系我

勿用於學術性引用。

勿用於商業出版、商業印刷、商業引用以及其他商業用途。                   

 

本文不定期修正完善。

本文鏈接:http://www.cnblogs.com/wlsandwho/p/5071967.html

恥辱牆:http://www.cnblogs.com/wlsandwho/p/4206472.html

=======================================================================

沒啥說的,鄙視那些無視版權隨意抓取博文的爬蟲小網站站長,聖誕了,祝你們見到上帝。

=======================================================================

“為什么會寫這么一些無聊又淺顯的小博客呢?”

“因為這些都是我在企鵝群里回答的問題呀。把有代表性的寫出來、記錄一下,以后再遇到這些問題就不用回答了。多省事呀。”

=======================================================================

上問題。

看起來是年底了,要把不同的表里的數據進行匯總。可以猜測下是出庫和入庫的兩個表,或者其他類似雙生的東西。

既然事主敢打包票說不重復而且一一對應,那就按最簡單的方法來吧。

事主沒有提供主鍵,下文代碼中的主鍵是我自己加的。

=======================================================================

 1 --by WLS
 2 --20151224
 3 --網絡代碼有風險復制粘貼須謹慎
 4 USE tempdb
 5 GO
 6 
 7 IF OBJECT_ID (N't_AbyWLS', N'U') IS NOT NULL
 8 DROP TABLE t_AbyWLS;
 9 CREATE TABLE t_AbyWLS(id INTEGER PRIMARY KEY,MC NVARCHAR(5),S1 INTEGER)
10 GO
11 
12 IF OBJECT_ID (N't_BbyWLS', N'U') IS NOT NULL
13 DROP TABLE t_BbyWLS;
14 CREATE TABLE t_BbyWLS(id INTEGER PRIMARY KEY,MC NVARCHAR(5),S2 INTEGER)
15 GO
16 
17 GO
18 
19 INSERT INTO t_AbyWLS
20 SELECT 1,'A',23
21 UNION
22 SELECT 2,'B',34
23 UNION
24 SELECT 3,'C',56
25 GO
26 
27 INSERT INTO t_BbyWLS
28 SELECT 1,'A',11
29 UNION
30 SELECT 2,'B',12
31 UNION
32 SELECT 3,'C',13
33 UNION
34 SELECT 4,'D',NULL
35 UNION
36 SELECT 5,'E',14
37 GO
38 
39 SELECT * FROM t_AbyWLS
40 GO
41 
42 SELECT * FROM t_BbyWLS
43 GO
44 
45 SELECT a.id AS f1,a.mc AS f2,a.s1 AS f3,b.id AS f4,b.mc AS f5,b.s2 AS f6 FROM t_AbyWLS a FULL JOIN t_BbyWLS b ON a.id=b.id
46 GO
47 
48 WITH TempFull
49 AS
50 (
51 SELECT a.id AS f1,a.mc AS f2,b.id AS f4,b.mc AS f5,a.s1 AS f3,b.s2 AS f6 FROM t_AbyWLS a FULL JOIN t_BbyWLS b ON a.id=b.id
52 )
53 SELECT CASE WHEN f1 IS NULL THEN f4 ELSE f1 END AS A,
54        CASE WHEN f2 IS NULL THEN f5 ELSE f2 END AS MC,
55        f3 AS S1,
56        f6 AS S2
57 FROM TempFull
58 GO

沒啥說的,基本上就是一個Full Outer Join。

=======================================================================

執行效果

附上執行計划

=======================================================================

(友情支持請掃描這個)

微信掃描上方二維碼捐贈


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM