我有一个脚本可以创建报告,但是我需要在底部有一个总行。
在SQL Server 2008中,我想我会使用汇总,但是我不知道如何在SQL Server 2005中做到这一点。
USE FEN
GO
SELECT
PMC.Store_ID,
PMC.Name,
SUM (PMC.[Net Sales] / 1000) AS 'Daily Sales',
SUM (PMCLY.[Net Sale LY] / 1000) AS 'Daily Sales LY',
CAST(100.0*(PMC.[Net Sales] - PMCLY.[Net Sale LY]) / PMCLY.[Net Sale LY] AS Decimal (10,2)) AS 'VAR % Vs LY',
SUM (PMCW.[Net Sales Week] / 1000) AS 'Daily Sales Week',
SUM (PMCLYW.[Net Sale Week LY] /1000) AS 'Daily Sales Week LY',
CAST(100.0*(PMCW.[Net Sales Week] - PMCLYW.[Net Sale Week LY]) / PMCLYW.[Net Sale Week LY] AS Decimal (10,2)) AS 'VAR % Vs LY'
FROM PMC_DailySalesReport AS pmc
JOIN PMC_DailySalesReportLY as pmcly on pmcly.Store_ID = pmc.Store_ID
JOIN PMC_DailySalesReportWeek as PMCW on pmcw.Store_ID = pmc.Store_ID
JOIN PMC_DailySalesReportLYWeek AS PMCLYW on PMCLYW.Store_ID = PMC.Store_ID
GROUP BY
PMC.Store_ID,
PMC.Name,
PMC.[Net Sales],
PMCLY.[Net Sale LY],
PMCLYW.[Net Sale Week LY],
PMCW.[Net Sales Week]
go
目的是将“商店ID”和“商店名称”中所有有关列的总计加到表底部
有什么想法吗?
答案 0 :(得分:1)
我希望您可以添加一个UNION ALL
来选择一个包含聚合的行,而不进行任何分组,这应该为所有行提供一个数字:
-- your query above, and then:
UNION ALL
SELECT
'All' As Store_ID,
'All' As Name,
SUM (PMC.[Net Sales] / 1000) AS 'Daily Sales',
SUM (PMCLY.[Net Sale LY] / 1000) AS 'Daily Sales LY',
CAST(100.0*(PMC.[Net Sales] - PMCLY.[Net Sale LY]) / PMCLY.[Net Sale LY] AS Decimal (10,2)) AS 'VAR % Vs LY',
SUM (PMCW.[Net Sales Week] / 1000) AS 'Daily Sales Week',
SUM (PMCLYW.[Net Sale Week LY] /1000) AS 'Daily Sales Week LY',
CAST(100.0*(PMCW.[Net Sales Week] - PMCLYW.[Net Sale Week LY]) / PMCLYW.[Net Sale Week LY] AS Decimal (10,2)) AS 'VAR % Vs LY'
FROM PMC_DailySalesReport AS pmc
JOIN PMC_DailySalesReportLY as pmcly on pmcly.Store_ID = pmc.Store_ID
JOIN PMC_DailySalesReportWeek as PMCW on pmcw.Store_ID = pmc.Store_ID
JOIN PMC_DailySalesReportLYWeek AS PMCLYW on PMCLYW.Store_ID = PMC.Store_ID
它可能不那么简单,因为在主查询中您有一些额外的分组依据字段,这些字段实际上并没有直接出现在选择中,但这是一般的想法。如果不查看架构,样本数据和预期输出,就很难更精确(因为无法测试查询)。