如何对列中的行进行求和?
我有一个运行查询的输出表。输出只是一行和多列。我希望能够将所有这些值相加,而无需指定每个列名。我怎么能这样做?
我已经使用聚合函数COUNT
来获取上面的数据,我相信这意味着我无法在其周围包装另一个聚合函数。
当前查询的结构是:
USE <SOME DM>
SELECT
COUNT (CASE WHEN ...)
COUNT (CASE WHEN ...)
...
FROM <SOME TABLE>
我正在使用 MS SQL Server 2012
答案 0 :(得分:2)
借助一点XML和一个CROSS APPLY
Declare @YourTable table (ID int,EEE int,EESI int,EETPL int)
Insert into @YourTable values
(1,10,20,30),
(2,40,50,60)
Select A.ID
,C.*
From @YourTable A
Cross Apply (Select XMLData=cast((Select A.* For XML RAW) as xml)) B
Cross Apply (
Select Total = Sum(Value)
,Min = Min(Value)
,Max = Max(Value)
,Avg = Avg(Value)
From (
Select Value = attr.value('.','int') --<< Change to proper data type
From B.XMLData.nodes('/row') as A(r)
Cross Apply A.r.nodes('./@*') AS B(attr)
Where attr.value('local-name(.)','varchar(100)') not in ('ID','OtherCols2Exclude') --<< Field Name is case sensitive
) S
) C
返回(仅为了好玩而添加最小/最大/平均值)
ID Total Min Max Avg
1 60 10 30 20
2 150 40 60 50