日期:2014-05-17  浏览次数:20456 次

江湖救急,“UNION ALL”的疑问?
“UNION ALL”不能将“列”完全一样的记录合并吗???



如下图:

问题一:如上图,“第一条记录”和“第三条记录”是使用“UNION ALL”关联起来的,而且这两条记录的列名完全一致。为什么这两条记录不会合并起来呢?

同时,将“01”、“02”、“03”、“04”、“05”、“06”、“07”、“08”、“10”、“11”、“12”列的数值加起来求和,作为合并后的记录的值。


问题二:“UNION ALL”不支持这样的功能吗? 如果要实现这样的功能应该怎么办??? 用什么方法,有实例可以参考吗?


------解决方案--------------------
union 才是合并一样的
------解决方案--------------------
UNION ALL 合并的时候不会去重复 使用UNION会去掉重复数据
------解决方案--------------------
SQL code
SELECT buildingno ,buildingname,buildingfunction,circuittype,unit,SUM([01]) [01],.....后面同理
FROM 
(SELECT buildingno ,buildingname,buildingfunction,circuittype,unit,ISNULL([01],0) [01].....后面同理
FROM 表
WHERE 第一条数据
UNION ALL 
SELECT buildingno ,buildingname,buildingfunction,circuittype,unit,ISNULL([01],0) [01].....后面同理
FROM 表
WHERE 第三条数据
)a
GROUP BY buildingno ,buildingname,buildingfunction,circuittype,unit

------解决方案--------------------
union all 只是做为将多个不相关的记录集合并成一个记录集,如果想达到你说的效果把 合并后的记录集 做为一个子表,再进行分组 group by 就能达到你说的效果了
例如

select p1,p2,p3,sum(p4) as p4,sum(p5) as p5
from (
select p1,p2,p3,p4,p5
union all
select p1,p2,p3,p4,p5
) t1
group by p1,p2,p3
------解决方案--------------------
用SUM求和就可以了。
------解决方案--------------------
探讨
union all 只是做为将多个不相关的记录集合并成一个记录集,如果想达到你说的效果把 合并后的记录集 做为一个子表,再进行分组 group by 就能达到你说的效果了
例如

select p1,p2,p3,sum(p4) as p4,sum(p5) as p5
from (
select p1,p2,p3,p4,p5
union all
select p1,p2,p……

------解决方案--------------------
不用写的这么细把,如果有 null 值,在union all 时,用isnull 判断一下呗
------解决方案--------------------
回复要有责任,等下报错了还来找你麻烦,来来回回多伤神。做程序员就要严谨啊~~~~,经验教训。不解释
------解决方案--------------------
探讨
引用:
union all 只是做为将多个不相关的记录集合并成一个记录集,如果想达到你说的效果把 合并后的记录集 做为一个子表,再进行分组 group by 就能达到你说的效果了
例如

select p1,p2,p3,sum(p4) as p4,sum(p5) as p5
from (
select p1,p2,p3,p4,p5
union all
select ……

------解决方案--------------------
探讨
select sum(null)

消息 8117,级别 16,状态 1,第 1 行
操作数数据类型 NULL 对于 sum 运算符无效。

我反正试过了才说的