[英]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.