簡體   English   中英

SQL查詢-是否可以向該查詢添加總計?

[英]SQL Query - is it possible to add a Grand Total to this query?

使用SSMS的SQL Server 2016 Enterprise ...

我有這樣的查詢:

WITH SUMS AS (
SELECT
    dbo.BillingActivity.BillingCodeId AS [Billing Code],
    dbo.Clients.ClientName AS [Client Name],
    dbo.BillingCodes.Name AS [Billing Code Name]
    , SUM(CASE WHEN Details LIKE '%"LW":"True"%' THEN 1 ELSE 0 END) AS [LW]
    , SUM(CASE WHEN Details LIKE '%"MHN":"True"%' THEN 1 ELSE 0 END) AS [MHN]
    , SUM(CASE WHEN Details LIKE '%"EPAP":true%' THEN 1 ELSE 0 END) AS [EPAP]
    , SUM(CASE WHEN Details LIKE '%"EPAP (old)":"True"%' THEN 1 ELSE 0 END) AS [EPAPOld]
FROM dbo.BillingActivity
INNER JOIN dbo.BillingCodes ON dbo.BillingActivity.BillingCodeId=dbo.BillingCodes.Id
INNER JOIN dbo.Clients ON dbo.BillingActivity.ClientId=dbo.Clients.ID
WHERE dbo.BillingActivity.RecordDateTime BETWEEN '2017-11-09' AND '2017-11-10'
GROUP BY dbo.BillingActivity.BillingCodeId, dbo.BillingCodes.Name, dbo.Clients.ClientName)
SELECT 
    [Billing Code],
    [Client Name],
    [Billing Code Name],
    [LW],
    [MHN],
    [EPAP],
    [EPAPOld],
    SUM(LW+MHN+EPAP+EPAPOld) OVER (PARTITION BY [Billing Code Name]) AS [Billing Code Total]
FROM SUMS
ORDER BY [Client Name] ASC, [Billing Code Name] ASC

這給了我以下結果:(表格拒絕在此處正確排列,因此圖像:

在此處輸入圖片說明

我想知道是否有可能(到目前為止,互聯網研究會拒絕)是我是否可以添加到該查詢中以創建第9列,該列將在“計費代碼總計”列中顯示所有金額的總計。 它顯示在哪一行都無關緊要,如果所有行中都顯示相同的數量也沒關系,我只需要在某處查看該列的總數即可。

請注意,“帳單代碼總計”名稱是別名。 這提出了另外的挑戰。

非常感謝。

billing code total不需要over()子句,但您想要的另一列則需要它,如下所示:

WITH
      sums AS (
                  SELECT
                        dbo.BillingActivity.BillingCodeId                                     AS [billing code]
                      , dbo.Clients.ClientName                                                AS [client name]
                      , dbo.BillingCodes.Name                                                 AS [billing code name]
                      , SUM(CASE WHEN Details LIKE '%"LW":"True"%' THEN 1 ELSE 0 END)         AS [lw]
                      , SUM(CASE WHEN Details LIKE '%"MHN":"True"%' THEN 1 ELSE 0 END)        AS [mhn]
                      , SUM(CASE WHEN Details LIKE '%"EPAP":true%' THEN 1 ELSE 0 END)         AS [epap]
                      , SUM(CASE WHEN Details LIKE '%"EPAP (old)":"True"%' THEN 1 ELSE 0 END) AS [epapold]
                  FROM dbo.BillingActivity
                  INNER JOIN dbo.BillingCodes ON dbo.BillingActivity.BillingCodeId = dbo.BillingCodes.Id
                  INNER JOIN dbo.Clients ON dbo.BillingActivity.ClientId = dbo.Clients.ID
                  WHERE dbo.BillingActivity.RecordDateTime BETWEEN '2017-11-09' AND '2017-11-10'
                  GROUP BY
                        dbo.BillingActivity.BillingCodeId
                      , dbo.BillingCodes.Name
                      , dbo.Clients.ClientName
            )
SELECT
      [Billing Code]
    , [Client Name]
    , [Billing Code Name]
    , [LW]
    , [MHN]
    , [EPAP]
    , [EPAPOld]
    , LW + MHN + EPAP + EPAPOld AS [billing code total]
    , SUM(LW + MHN + EPAP + EPAPOld) OVER() as all_sum
FROM sums
ORDER BY
      [Client Name] ASC
    , [Billing Code Name] ASC

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM