有两个以上视图,其字段相同,比如,分别为单位编号,数量1,数量2,数量3...
现在想把两个视图的内容合并起来,比如
视图1中有单位编号:001,数量1:4,数量2:3,数量3为空
视图2:单位:001,数量1:3,数量2:为空,数量3:3
单位:002,数量1:2,数量2:4,数量3:1
合并后的结果包含下面的记录
单位编号,数量1, 数量2, 数量3
001 7(4+3) 3 3
002 1 2 1
现在想把两个视图的内容合并起来,比如
视图1中有单位编号:001,数量1:4,数量2:3,数量3为空
视图2:单位:001,数量1:3,数量2:为空,数量3:3
单位:002,数量1:2,数量2:4,数量3:1
合并后的结果包含下面的记录
单位编号,数量1, 数量2, 数量3
001 7(4+3) 3 3
002 1 2 1
select 单位编号,sum(数量1) as 数量1,sum(数量2) as 数量2,sum(数量3) as 数量3
from
(
select * from view1
union all
select * from view2
)a
group by 单位编号
from
(
select 单位编号, 数量1, 数量2, 数量3
from view1
union all
select 单位编号, 数量1, 数量2, 数量3 from view2
)a
group by a.单位编号
select isnull(a.单位编号,b.单位编号) as 单位编号,
isnull(a.数量1)+isnull(b.数量1) as 数量1,
isnull(a.数量2)+isnull(b.数量2) as 数量2,
isnull(a.数量3)+isnull(b.数量3) as 数量3
from
view1 a full join view2 b
on a.单位编号=b.单位编号
group by 单位编号
select 单位编号,sum(数量1) as 数量1,sum(数量2) as 数量2,sum(数量3) as 数量3
from
(
select * from view1
union all
select * from view2
union all
select * from view3
)
group by 单位编号
有重复值
你看我的写法对不对阿
如果不一样,不用*而用字段列表,将字段一一对应即可.如果 单位编号 有重复值,那可能是因为值确实不一样.比如char的空格,字符编码,全半角等等
在SQL Server 高手的大海中小心的行走
==================================