日期:2014-05-18  浏览次数:20705 次

“pivot”和“UNION ALL”的问题
group by m.meterno,m.metertype,m.Unit,m.meterusetype,m.regionno,m.buildingfunction,m.buildingno,m.usedepartment,V.SN,V.DD) as P 
  pivot (sum(P.sumqty) for P.DD in ([01],[02],[03],[04],[05],[06],[07],[08],[09],[10],[11],[12] )) as AA/*AA*/
   
  UNION ALL

问题一:“pivot”的作用是什么???怎样用???

个人理解:把一个字段值“P.sumqty”,按照另一个字段“P.DD”,将其分出来,由“P.DD”中在
([01],[02],[03],[04],[05],[06],[07],[08],[09],[10],[11],[12] )范围内的,担任字段名称。


问题二:“UNION ALL”的作用是什么,怎样进行连接的,把“两条记录”和在一起。还是怎么着???

------解决方案--------------------

pivot 是SQL2005特有的一个表运算符、你也可以像你那样理解。你不需要为它显示地指定分组元素,也就是不需要用到GROUP BY 建议楼主去看看透视转换

Union All 转换将多个输入组合到一个输出中
------解决方案--------------------
SQL code
1. [url=http://yuxuan2029.blog.163.com/blog/static/1946153362009915113935552/]sql中PIVOT 用法详解[/url]

2.

union all,解释为联合所有
Union解释为联合
union或者Union all实现把前后两个select集合的数据联合起来,组成一个结果集查询输出。

这就要求联合前后的结果集,需要分别有相同的输出字段的数目,并且对应的字段类型要相同。
SELECT column1, column2 from table1
union (all)
select column1, column2 from table2
以上语句要求量表的column1字段类型相同,column2类型相同。而且每个查询的数目都是一样的。

UNION ALL和UNION的差别就在ALL上面,第一个叫联合所有,说明会显示前后两个查询所有的数据,而UNION没有ALL(所有)这个单词,实现将前后两个查询的数据联合到一起后,去掉重复的数据显示。

比如
SELECT COLUMN1 FROM TABLE1的结果是
1
2
3 
SELECT COLUMN1 FROM TABLE2的结果是
1
5
6

分别都是三行,那么UNION ALL的结果就是6行
1
2
3
1
5
6
而UNION会过滤掉上述结果中1的重复一行,结果是
1
2
3
5
6
五行结果

------解决方案--------------------
pivot是行转列或者列转行时用的
union或者Union all实现把前后两个select集合的数据联合起来,组成一个结果集查询输出。