当前位置: 代码迷 >> Sql Server >> 江湖救急“UNION ALL”的疑义
  详细解决方案

江湖救急“UNION ALL”的疑义

热度:323   发布时间:2016-04-27 11:02:10.0
江湖救急,“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 第三条数据)aGROUP 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 运算符无效。

我反正试过了才说的
  相关解决方案