繁体   English   中英

在每个唯一的CustomerName之后添加总计行

[英]Add a Total Row after each Unique CustomerName

我正在尝试在每个“唯一的客户名”之后添加“总计”行。 我尝试了ROLLUP,但由于我要分组的字段数量,它似乎无法正常工作。 我正在寻找的示例将是伪的

(FlavorName('Total'),2016Sales(总销售额的总和),2017Sales(总销售额的总和),2016TotalPounds(总英镑的总和),2017TotalPounds(总英镑的总和))

请在下面找到我当前的代码。

WITH cte AS (SELECT        CustName AS CustomerName, ItemKey AS CICode, Description AS FlavorName, CASE WHEN InvoiceDate BETWEEN '2016-01-01' AND 
                                                      '2016-12-31' THEN SUM(LineNet) ELSE 0 END AS [2016TotalSales], CASE WHEN InvoiceDate BETWEEN '2017-01-01' AND getdate() THEN SUM(LineNet)
                                                       ELSE 0 END AS [2017TotalSales], CASE WHEN InvoiceDate BETWEEN '2016-01-01' AND '2016-12-31' THEN ROUND(SUM(QtyOrd), 2) 
                                                      ELSE 0 END AS [2016TotalPounds], CASE WHEN InvoiceDate BETWEEN '2017-01-01' AND getdate() THEN ROUND(SUM(QtyOrd), 2) 
                                                      ELSE 0 END AS [2017TotalPounds], BasePrice, SUBSTRING(CAST(InvoiceDate AS nvarchar(50)), 8, 5) AS year, UOM
                             FROM            dbo.ABC
                             GROUP BY CustName, ItemKey, Description, BasePrice, InvoiceDate, UOM)
    SELECT        TOP (100) PERCENT CustomerName, CASE WHEN CICode IS NULL THEN 'ALL' ELSE CICode END AS CICode, CASE WHEN BasePrice IS NULL

                              THEN 'TOTALS' ELSE FlavorName END AS FlavorName, SUM([2016TotalSales]) AS [2016Sales], SUM([2017TotalSales]) AS [2017Sales], SUM([2016TotalPounds]) 
                              AS [2016TotalPounds], ROUND(SUM([2017TotalPounds]), 2) AS [2017TotalPounds], UOM, ISNULL(ROUND((SUM([2017TotalPounds]) - SUM([2016TotalPounds])) 
                              / NULLIF (SUM([2016TotalPounds]), 0) * 100, 2), 100) AS [%Change], BasePrice
     FROM            cte AS cte_1
     GROUP BY CustomerName, CICode, FlavorName, BasePrice, UOM
     HAVING         (SUM([2016TotalSales]) + SUM([2017TotalSales]) > 0)

尝试GROUPING SETS

GROUP BY GROUPING SETS ( (CustomerName, CICode, FlavorName, BasePrice, UOM), (CustomerName) )

您可能必须使用ORDER BY才能以所需的特定顺序获得结果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM