解析SQLServer任意列之间的聚合

2022-11-12 09:43:18
内容摘要
这篇文章主要为大家详细介绍了解析SQLServer任意列之间的聚合,具有一定的参考价值,可以用来参考一下。 对此感兴趣的朋友,看看idc笔记做的技术笔记!sql的max之类的聚合函数只能
文章正文

这篇文章主要为大家详细介绍了解析SQLServer任意列之间的聚合,具有一定的参考价值,可以用来参考一下。

对此感兴趣的朋友,看看idc笔记做的技术笔记!

sql的max之类的聚合函数只能针对同一列的n行运算,如果对n列运算,一般都用case 语句来判断,如果列少还比较容易写,列多了就麻烦了。--------------------------------------------------------------------------------/*测试名称:利用 XML 求任意列之间的聚合测试功能:对一张表的列数据做 min 、 max 、 sum 和 avg 运算运行原理:字段合并为 xml 后做 xquery 查询转为行集后聚合*/-- 建立测试环境 declare @t table (id smallint ,a smallint , b smallint ,c smallint , d smallint ,e smallint , f smallint )insert into @tselect 1, 1, 2, 3, 4, 6, 7 union allselect 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 )) bouter apply(selectmin ( 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 32 34 45 56 54 9 6 6 56 204 34*/

注:关于解析SQLServer任意列之间的聚合的内容就先介绍到这里,更多相关文章的可以留意

代码注释

作者:喵哥笔记

IDC笔记

学的不仅是技术,更是梦想!