2014-02-12 2 views
0

У меня есть сценарий ниже. Результатом является XML-данные в формате Row/Column. Также с переменной [Name].Выберите и выберите Count (aggregate & non aggregate в том же запросе)

В данный момент я использую только оператор 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

Если Я правильно понимаю, и вы хотите TOTALS этих colums в кластере и месяц, то вы можете попробовать:

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' 

Если вы не хотите, чтобы суммировать все столбцы, которые вы могли бы использовать другой A ggregate вместо SUM(), например. COUNT() или MAX() для любого из столбцов

+0

Спасибо, но не работает, ошибка: Столбец «CDM_Dim_Date.Month» недопустим в списке выбора, потому что он не содержится ни в агрегатной функции, ни в предложении GROUP BY. – user3248190

+0

Попробуйте сейчас, я исправил его – Manu

+0

Спасибо, но все та же ошибка .. – user3248190

Смежные вопросы