2017-12-18 10 views
0

のSQL Server 2016のEnterprise、...SQLクエリ - このクエリに総計を追加できますか? SSMSを使用して

私はこのように、クエリを持っている:

私に次のような結果を与える
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 

:(表は、このように、ここに正しく並ぶことを拒否しました画像:

enter image description here

私は(インターネット調査これまでにノーと言うでしょう)可能であるかどうかを思ったんだけど、私は、合計が表示されます第九列を作成するには、このクエリに追加できるかどうかでありますBilling Code Totalの欄にすべての金額を入力します。同じ行がすべての行に表示されるかどうかは関係ありません。その列の合計をどこかで確認するだけです。

課金コードの合計名はエイリアスです。これは追加の課題を提案する。

多くのありがとうございます。

+3

は[ 'ROLLUP'](HTTPSに精通しています。 microsoft.com/en-us/library/ms189305(v=sql.90).aspx)? –

+0

これはあなたのクライアントプログラムの仕事のようです。 –

+0

どのdbms ?????? – Eric

答えて

1

あなたはbilling code totalためover()句は必要ありませんが、あなたが欲しい、他の列のために行う、このような何か://のTechNet:

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 
+0

これは完璧に動作します。よくできてありがとう。答えとしてマーク。 – Stpete111

関連する問題