Добавление итоговой строки в SQL Server 2005? - PullRequest
0 голосов
/ 21 декабря 2018

У меня есть сценарий, который создает отчет, однако мне требуется общая строка внизу.

В SQL Server 2008 я думаю, что я бы использовал свертку, но я не могу понять, как это сделать в SQL Server2005.

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

Цель состоит в том, чтобы добавить итоги в конец таблицы для всех столбцов, относящихся к идентификатору магазина и имени магазина

Есть идеи?

1 Ответ

0 голосов
/ 21 декабря 2018

Я ожидаю, что вы можете добавить 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

Возможно, это не таквсе так просто, учитывая, что в основном запросе у вас есть дополнительная группа по полям, которые на самом деле не отображаются непосредственно в select, но это общая идея.Не видя схемы, примеров данных и ожидаемого результата, трудно быть более точным (потому что невозможно проверить запрос).

...