两个表,如何把内容为空的用另一表的内容替换。合并

HU0L0NG 2008-11-26 10:47:36
表1
姓名 年龄 第一学历 第一学历毕业院校 第一学历专业 第二学历 第二学历毕业院校 第二学历专业
张三 29 大专 轻工学院 计算机
李四 35 本科 医科大学 临床医学


表2
姓名 年龄 第一学历 第一学历毕业院校 第一学历专业 第二学历 第二学历毕业院校 第二学历专业
张三 29 本科 党校 计算机
李四 35 中专 襄樊卫校 西医

如何把两个表的内容和成如下:

姓名 年龄 第一学历 第一学历毕业院校 第一学历专业 第二学历 第二学历毕业院校 第二学历专业
张三 29 大专 轻工学院 计算机 本科 党校 计算机
李四 35 中专 襄樊卫校 西医 本科 医科大学 临床医学
...全文
132 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Moon_F 2008-11-26
  • 打赏
  • 举报
回复
case when XX is not null then a.XX

when XX is null then b.XX
csdyyr 2008-11-26
  • 打赏
  • 举报
回复
DECLARE  @TA TABLE(COL NVARCHAR(5),COL2 NVARCHAR(5),COL3 NVARCHAR(5),COL4 NVARCHAR(5),COL5 NVARCHAR(5),
COL6 NVARCHAR(5),COL7 NVARCHAR(5),COL8 NVARCHAR(5))
INSERT @TA
SELECT N'张三', 29, '','','', N'大专', N'轻工学院', N'计算机' UNION ALL
SELECT N'李四', 35, '','','', N'本科', N'医科大学', N'临床医学'


DECLARE @TB TABLE(COL NVARCHAR(5),COL2 NVARCHAR(5),COL3 NVARCHAR(5),COL4 NVARCHAR(5),COL5 NVARCHAR(5),
COL6 NVARCHAR(5),COL7 NVARCHAR(5),COL8 NVARCHAR(5))
INSERT @TB
SELECT N'张三', 29, N'本科', N'党校', N'计算机','','','' UNION ALL
SELECT N'李四', 35, N'中专', N'襄樊卫校', N'西医','','',''


SELECT A.COL,B.COL2,
CASE WHEN A.COL3='' THEN B.COL3 ELSE A.COL3 END AS COL3,
CASE WHEN A.COL4='' THEN B.COL4 ELSE A.COL4 END AS COL4,
CASE WHEN A.COL5='' THEN B.COL5 ELSE A.COL5 END AS COL5,
CASE WHEN A.COL6='' THEN B.COL6 ELSE A.COL6 END AS COL6,
CASE WHEN A.COL7='' THEN B.COL7 ELSE A.COL7 END AS COL7,
CASE WHEN A.COL8='' THEN B.COL8 ELSE A.COL8 END AS COL8
FROM @TA AS A JOIN @TB AS B ON A.COL=B.COL
/*
COL COL2 COL3 COL4 COL5 COL6 COL7 COL8
----- ----- ----- ----- ----- ----- ----- -----
张三 29 本科 党校 计算机 大专 轻工学院 计算机
李四 35 中专 襄樊卫校 西医 本科 医科大学 临床医学
*/
xieyueqing 2008-11-26
  • 打赏
  • 举报
回复
select 表1.姓名, 表1.年龄 ,表1.第一学历 ,表1.第一学历毕业院校 ,表2.第一学历专业,
表2.第一学历 as 第二学历,表2.第一学历毕业院校 as 第二学历毕业院校 ,表2.第一学历专业 as 第二学历专业
from 表1 left outer join 表2 on 表1.姓名 = 表2.姓名
csdyyr 2008-11-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 csdyyr 的回复:]
SQL codeSELECT姓名,年龄,MAX(第一学历)AS第一学历,MAX(.....FROM(SELECT*FROMA
UNINOALLSELECT*FROMB
) TGROUPBY姓名,年龄
[/Quote]
SELECT 姓名,年龄,ISNULL(A.第一学历, B.第一学历) AS 第一学历
FROM A JOIN B ON A.姓名=B.姓名
csdyyr 2008-11-26
  • 打赏
  • 举报
回复

SELECT 姓名,年龄,MAX(第一学历) AS 第一学历,MAX(.....
FROM (
SELECT * FROM A
UNINO ALL
SELECT * FROM B
) T
GROUP BY 姓名,年龄
wzy_love_sly 2008-11-26
  • 打赏
  • 举报
回复
xml,先拆分后合并
http://topic.csdn.net/u/20080612/22/c850499f-bce3-4877-82d5-af2357857872.html

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧