2014-02-12 146 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