SQLServer任意列之间的聚合
SQLServer任意列之间的聚合 收藏
测试名称:利用 XML 求任意列之间的聚合 测试功能:对一张表的列数据做 min 、 max 、 sum 和 avg 运算 运行原理:字段合并为 xml 后做 xquery 查询转为行集后聚合 作者: jinjazz (近身剪) */ -- 建立测试环境 declare @t table ( id smallint, a smallint,b smallint, c smallint,d smallint, e smallint,f smallint ) ? insert into @t select 1,1,2,3,4,6,7 union all select 2,34,45,56,54,9,6 ? -- 测试语句 select?? a.*,c.* from @t a outer apply( select doc=( select * from @t as doc where id= a. id? for xml path ( '' ),type?? ) ) b outer apply( select min ( r) as minValue, max ( r) as maxValue, sum ( r) as sumValue, avg ( r) as avgValue ? from ( ??? select cast ( cast ( d. n. query( 'text()' ) as varchar ( max )) as int ) as r ?????? from doc. nodes( '/a,b,c,d,e,f' ) D( n)) tt ) c ????? /* 测试结果 ? id???? a????? b????? c????? d????? e????? f????? minValue??? maxValue??? sumValue??? avgValue ------ ------ ------ ------ ------ ------ ------ ----------- ----------- ----------- ----------- 1????? 1????? 2????? 3????? 4????? 6????? 7????? 1?????????? 7?????????? 23????????? 3 2????? 34???? 45???? 56???? 54???? 9????? 6????? 6?????????? 56?????????? 204???????? 34 */ ? 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/jinjazz/archive/2009/03/27/4031167.aspx (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |