Прежде всего я хотел бы упомянуть, что если это для презентации в веб-интерфейсе или отчете, вы можете сделать гораздо более простой запрос группировки с суммированием, а затем просто переместить фрагменты данных, чтобы они появлялись там, где они должны быть , Например, вы можете начать новую строку HTML после [Total_Amount] и вставить 4 пустых ячейки, затем следующий промежуточный итог и т. Д., Создав желаемую структуру таблиц.
-- it appears this query contains everything you are asking for, but not using the same 'tabular structure.'
SELECT
name
,MONTH([MyDate]) AS [MonthNumber]
,DATENAME(MONTH, [MyDate]) AS [MONTH]
,YEAR([MyDate]) AS [YEAR]
,SUM(Amount) AS [Total_Amount]
,SUM(Retailfee) AS [Total_Retailfee] -- move down one row
,SUM(Transactions) AS [Total_Transactions] -- move down two rows
FROM #temp
GROUP BY
name
,MONTH([MyDate])
,DATENAME(MONTH, [MyDate])
,YEAR([MyDate]
Похоже, что вы хотите иметь три строки возвращаются в запросе для каждого [имя] и [МЕСЯЦ] комбинации в наборе данных. Если да, то здесь решение, используя настройки, чтобы создать некоторые образцы данных и производной таблицы, чтобы извлечь это по желанию:
-- I find that providing example data help to get more accurate results for some queries
CREATE TABLE #temp (
name VARCHAR(20)
,MyDate DATE
,Amount DECIMAL(8,4)
,Retailfee DECIMAL(8,4)
,Transactions DECIMAL(8,4)
);
-- no idea what these values actually mean so the data may not make sense.
INSERT #temp VALUES ('Spar Group','01/01/2013',1000.00,163.55,200.00)
INSERT #temp VALUES ('Spar Group','01/02/2013',40.00,0.11,2.00)
INSERT #temp VALUES ('Spar Group','01/03/2013',299.99,35.00,33.00)
INSERT #temp VALUES ('Spar Group','02/03/2013',145.99,0.00,7.00)
INSERT #temp VALUES ('Shoprite','01/01/2013',22.99,0.00,8.00)
INSERT #temp VALUES ('Shoprite','01/02/2013',149.95,16.60,11.50)
SELECT
name
,[MonthNumber]
,[MONTH]
,[YEAR]
,[Category]
,[CategoryTotal]
FROM (
-- select the first row for each [name],[month] group
SELECT
name
,MONTH([MyDate]) AS [MonthNumber]
,DATENAME(MONTH, [MyDate]) AS [MONTH]
,YEAR([MyDate]) AS [YEAR]
,'Total_Amount' AS [Category]
,SUM(Amount) AS [CategoryTotal]
FROM #temp
GROUP BY
name
,MONTH([MyDate])
,DATENAME(MONTH, [MyDate])
,YEAR([MyDate])
UNION ALL
-- select the second row for each [name],[month] group
SELECT
name
,MONTH([MyDate]) AS [MonthNumber]
,DATENAME(MONTH, [MyDate]) AS [MONTH]
,YEAR([MyDate]) AS [YEAR]
,'Total_Retailfee' AS [Category]
,SUM(Retailfee) AS [CategoryTotal]
FROM #temp
GROUP BY
name
,MONTH([MyDate])
,DATENAME(MONTH, [MyDate])
,YEAR([MyDate])
UNION ALL
-- select the third row for each [name],[month] group
SELECT
name
,MONTH([MyDate]) AS [MonthNumber]
,DATENAME(MONTH, [MyDate]) AS [MONTH]
,YEAR([MyDate]) AS [YEAR]
,'Total_Transactions' AS [Category]
,SUM(Transactions) AS [CategoryTotal]
FROM #temp
GROUP BY
name
,MONTH([MyDate])
,DATENAME(MONTH, [MyDate])
,YEAR([MyDate])
) AS T
ORDER BY
name, [MONTH], [YEAR]
,CASE
WHEN [Category]='Total_Amount' THEN 1
WHEN [Category]='Total_Retailfee' THEN 2
ELSE 3
END
попробовать 'SELECT * FROM yourtable WHERE имя =«Спар Group''? –
Извините, результат, который мне нужен, не показал должным образом, мне в основном нужны все четыре этих имени, но мне нужно общее количество, total_Retailfee и total_transactions под друг другом с именем строки в качестве описания и рядом с каждой их суммой. –