SQL Server 2008 R2——使用FULL OUTER JOIN实现多表信息汇总

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 RDS SQL Server,基础系列 2核4GB
简介: 原文:SQL Server 2008 R2——使用FULL OUTER JOIN实现多表信息汇总=================================版权声明================================= 版权声明:原创文章 谢绝转载  请通过右侧公告中的“联系邮箱(wlsandwho@foxmail.com)”联系我 勿用于学术性引用。
原文: 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。

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

执行效果

附上执行计划

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

 

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
目录
打赏
0
0
0
0
216
分享
相关文章
|
4月前
|
使用java在未知表字段情况下通过sql查询信息
使用java在未知表字段情况下通过sql查询信息
58 8
SQL语句当前及历史信息查询-performance schema的使用
本文介绍了如何使用MySQL的Performance Schema来获取SQL语句的当前和历史执行信息。Performance Schema默认在MySQL 8.0中启用,可以通过查询相关表来获取详细的SQL执行信息,包括当前执行的SQL、历史执行记录和统计汇总信息,从而快速定位和解决性能瓶颈。
159 1
|
4月前
|
SQL
SQL JOIN
【11月更文挑战第06天】
61 4
图解 SQL 里的各种 JOIN
用文氏图表示 SQL 里的各种 JOIN,一下子就理解了。
88 2
Hadoop-11-MapReduce JOIN 操作的Java实现 Driver Mapper Reducer具体实现逻辑 模拟SQL进行联表操作
Hadoop-11-MapReduce JOIN 操作的Java实现 Driver Mapper Reducer具体实现逻辑 模拟SQL进行联表操作
74 3
|
6月前
|
使用java在未知表字段情况下通过sql查询信息
使用java在未知表字段情况下通过sql查询信息
54 1
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
Struts 2 携手 RESTful:颠覆传统,重塑Web服务新纪元的史诗级组合!
【8月更文挑战第31天】《Struts 2 与 RESTful 设计:构建现代 Web 服务》介绍如何结合 Struts 2 框架与 RESTful 设计理念,构建高效、可扩展的 Web 服务。Struts 2 的 REST 插件提供简洁的 API 和约定,使开发者能快速创建符合 REST 规范的服务接口。通过在 `struts.xml` 中配置 `<rest>` 命名空间并使用注解如 `@Action`、`@GET` 等,可轻松定义服务路径及 HTTP 方法。
91 0
数据库数据恢复—SQL Server数据库报错“错误823”的数据恢复案例
SQL Server附加数据库出现错误823,附加数据库失败。数据库没有备份,无法通过备份恢复数据库。 SQL Server数据库出现823错误的可能原因有:数据库物理页面损坏、数据库物理页面校验值损坏导致无法识别该页面、断电或者文件系统问题导致页面丢失。
143 12
数据库数据恢复—SQL Server数据库报错“错误823”的数据恢复案例
数据库数据恢复—SQL Server报错“错误 823”的数据恢复案例
SQL Server数据库附加数据库过程中比较常见的报错是“错误 823”,附加数据库失败。 如果数据库有备份则只需还原备份即可。但是如果没有备份,备份时间太久,或者其他原因导致备份不可用,那么就需要通过专业手段对数据库进行数据恢复。

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等