我的问题有两个部分:
NULL
值,所以不能总计一些行。 此枢纽必须是总行枢纽的%。
选择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
对于总行的百分比,我将使用外部选择(以提高可读性),如下所示:
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;
您将不得不根据自己的喜好格式化数字,但这应该为您提供%/总计。