首页 > 解决方案 > 在交叉表查询中将空值转换为零

问题描述

下面的代码是导致交叉表查询的较大代码的子集。问题是右侧的总列将交叉表查询中的所有数字列求和,因为它会导致在它试图求和的十二列之一中具有空值的任何行的结果为 0。

我相信我需要在代码的以下行中添加一个条件,如果值为空,则结果为零。我只需要有人再看看它。如果有更好的替代解决方案,我也很乐意接受。

SUM(entry) for MX in (M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12)

        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'

标签: sqlpivotisnull

解决方案


我认为您可以使用 COALESCE 或 IFNULL 函数将空值替换为 0 以进行总和计算。查看此响应:可在 SQL Server 和 MS Access 中使用的 COALESCE、IFNULL 或 NZ() 函数


推荐阅读