SQL枢纽中总行的百分比

问题描述 投票:-1回答:1

我的问题有两个部分:

  1. 部分1已解决。我有一个SQL Server透视查询,可以给我很好的结果,但是由于其中一列中的NULL值,所以不能总计一些行。
  2. 此枢纽必须是总行枢纽的%。

    选择ISNULL([99211],0),ISNULL([99212],0),ISNULL([99213],0),ISNULL([99214],0),ISNULL([99215],0),(ISNULL([99211],0)+ ISNULL([99212],0)+ ISNULL([99213],0)+ ISNULL([99214],0)+ ISNULL([99215],0))总来自(选择MONTH(c.ClaimServiceDate)作为MOS,t。[ProcedureCode],ISNULL(CONVERT(INT,t.NumberofCharges),0)AS费用摘自[EIPODS]。[雅典娜]。[声明] c内部联接[EIPODS]。[雅典娜]。[交易] t ON c.claimID = t.claimID'2016-01-01'和'2016-09-30'之间的c.ClaimServiceDate)吨皮沃特(SUM(收费)FOR t。[ProcedureCode] IN([99211],[99212],[99213],[99214],[99215]))ASivot_table按MOS订购

编辑:在亚历克斯的建议下(在评论下方)-我将第1行中的合计放入ISNULL中,并消除了合计中的0。

当前显示:

MOS    99211    99212    TOTAL  
----
1      20      30    **50**  
2      0    40       **40**  

需要显示:

MOS    99211    99212    TOTAL  
----
1      40%      60%     **100%**  
2      0%       100%    **100%**  

数据:交易表:enter image description here

索赔表:enter image description here

sql-server pivot row percentage isnull
1个回答
0
投票

对于总行的百分比,我将使用外部选择(以提高可读性),如下所示:

SELECT t.[99211] / t.Total AS [99211],
       t.[99212] / t.Total AS [99212],
       t.[99213] / t.Total AS [99213],
       t.[99214] / t.Total AS [99214],
       t.[99215] / t.Total AS [99215],
       t.Total / t.Total
FROM
(
    SELECT pivot_table.MOS,
           ISNULL([99211], 0) AS [99211],
           ISNULL([99212], 0) AS [99212],
           ISNULL([99213], 0) AS [99213],
           ISNULL([99214], 0) AS [99214],
           ISNULL([99215], 0) AS [99215],
           (ISNULL([99211], 0) + ISNULL([99212], 0) + ISNULL([99213], 0) + ISNULL([99214], 0) + ISNULL([99215], 0)) AS Total
    FROM
    (
        SELECT MONTH(c.ClaimServiceDate) AS MOS,
               t.[ProcedureCode],
               ISNULL(CONVERT(INT, t.NumberofCharges), 0) AS Charges
        FROM [EIPODS].[Athena].[claim] c
            INNER JOIN [EIPODS].[Athena].[transactions] t
                ON c.claimID = t.claimID
        WHERE c.ClaimServiceDate
        BETWEEN '2016-01-01' AND '2016-09-30'
    ) t
    PIVOT
    (
        SUM(Charges)
        FOR t.[ProcedureCode] IN ([99211], [99212], [99213], [99214], [99215])
    ) AS pivot_table
) t
ORDER BY t.MOS;

您将不得不根据自己的喜好格式化数字,但这应该为您提供%/总计。

© www.soinside.com 2019 - 2024. All rights reserved.