下面的代码是导致交叉表查询的较大代码的子集。问题在于,将交叉表查询中的所有数字列加起来的右侧的合计列无法正确计算,因为对于试图求和的十二列之一中具有空值的任何行,结果均为0。
我认为,我需要在代码的以下行中添加一个条件,如果该值为null,则结果为零。我只需要一个人再看看它。如果有更好的替代解决方案,我也很乐意接受。
(M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12)中MX的SUM(entry)
SELECT
tblCenters.prop
,tblAccounts.Category_EXCO
,tblCenters.CenterNum
,tblAccounts.AccountNum
,tblAccounts.Account_Description
,tblAccounts.Is_Revenue
,tblAccounts.Is_Above_EBITDA
,tblCenters.Division_Description
,tblCenters.[Is_F&B1]
,tblCenters.Group_Description
,Entry
,MX
FROM GA_Financial.dbo.tblSAP
left join tblMX on tblSAP.MDY = tblMX.MDY
left join tblAccounts on tblSAP.AccountNum = tblAccounts.AccountNum
left join tblCenters on tblSAP.CenterNum = tblCenters.CenterNum and tblSAP.Prop_SAP = tblCenters.PROP_SAP
WHERE tblAccounts.Is_Above_EBITDA = 1
AND tblSAP.Type = 'A'
)
AS Tab1
--The code below breaks down column "Entry" into twelve individual monthly columns and fills columns M1 through M12
PIVOT
(
SUM(entry) for MX in (M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12)
) as TAb2
where Prop = 'RWNY'
答案 0 :(得分:0)
我认为您可以使用COALESCE或IFNULL函数将零值替换为0进行求和。查看以下回复:COALESCE, IFNULL, or NZ() function that can be used in SQL Server and MS Access
答案 1 :(得分:0)
为避免结果为空,请在原始查询中使用ISNULL(Entry, 0)
而不是Entry
。这会将所有返回的null替换为0。