2017-12-18 1 views
0

SQL 서버 SSMS를 사용하여 2016 기업, ... SQL 쿼리 -이 쿼리에 총 합계를 추가 할 수 있습니까?

내가 같은 따라서 쿼리가 있습니다

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 열을 만들려면이 쿼리에 추가 할 수 있는지 여부입니다 궁금 무엇

enter image description here

청구 코드 합계 열의 모든 금액을 어떤 행이 표시되는지는 중요하지 않으며 동일한 양이 모든 행에 표시되는 경우에도 중요하지 않습니다. 그 행의 총계를 어딘가에서 볼 필요가 있습니다.

청구 코드 총 이름은 별칭입니다. 이것은 추가적인 도전을 제안합니다.

감사합니다.

+3

는 ['ROLLUP'] (https를 잘 알고 있습니까 : // TechNet의. microsoft.com/en-us/library/ms189305(v=sql.90).aspx)? –

+0

이것은 클라이언트 프로그램의 작업처럼 들립니다. –

+0

어느 dbms ?????? – Eric

답변

1

당신은 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 
+0

이것은 완벽하게 작동합니다. 잘 했어 고마워. 답변으로 표시되었습니다. – Stpete111

관련 문제