2014-02-12 213 views
0

我有以下脚本。输出是行/列格式的XML数据。还有一个变量[Name]。选择并选择计数(聚合和非聚合在同一查询中)

此时我只使用select语句。我需要的是在SELECT语句中的某些列(不是全部)的那笔

,需要加以汇总的列有:ColumnA,ColumnB,ColumnC

脚本:

;With CTE 
AS 
(
SELECT [Month] 
,[Name] 
,[Month_Code] 
,[ColumnA] 
,[ColumnB] 
,[ColumnC] 
FROM Fact_A 
INNER JOIN Dim_A on Fact_A.Key = Dim_A.Key 
INNER JOIN Dim_B on Fact_A_Key = Dim_B.Key 
WHERE Fiscal_Year = '20132014' 
) 

select [Name] AS [@name], 
(select [Month] as [column], 
null as tmp, 
ColumnA as [column], 
null as tmp, 
ColumnB as [column], 
null as tmp, 
ColumnC as [column] 
from CTE 
where [Name] = t.[Name] 
Order BY [Month_Code] 

for xml path('row'),type) as [*] 
from (select distinct [Name] from CTE)t 
for xml path('variable'),root('data') 
+0

这是什么数据库? – SriniV

回答

0

如果我理解正确的,你想每个集群和月份这些柱的侧向承载力的总和,那么你可以尝试:

SELECT Month 
,Name 
,Month_Code 
,SUM(ColumnA) AS A 
,SUM(ColumnB) AS B 
,SUM(ColumnC) AS C 
FROM Fact_A 
INNER JOIN Dim_A on Fact_A.Key = Dim_A.Key 
INNER JOIN Dim_B on Fact_A_Key = Dim_B.Key 
GROUP BY Month, Name, Month_Code 
WHERE Fiscal_Year = '20132014' 

如果您不希望您总结的所有列,你可以使用其他一ggregate而不是SUM(),例如COUNT()或MAX()用于任何列

+0

谢谢,但无效,错误:列'CDM_Dim_Date.Month'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中。 – user3248190

+0

现在就试试吧,我修好了 – Manu

+0

谢谢,但是还是一样的错误.. – user3248190