解析SQLServer任意列之间的聚合
发布时间:2020-12-12 09:50:49 所属栏目:MsSql教程 来源:网络整理
导读:sql的max之类的聚合函数只能针对同一列的n行运算,如果对n列运算,一般都用case 语句来判断,如果列少还比较容易写,列多了就麻烦了。 -------------------------------------------------------------------------------- / 测试名称:利用 XML 求任意列之
sql的max之类的聚合函数只能针对同一列的n行运算,如果对n列运算,一般都用case 语句来判断,如果列少还比较容易写,列多了就麻烦了。 -- 建立测试环境 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 */ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |