Конвертировать нулевые значения в ноль в запросе кросс-таблицы - PullRequest
0 голосов
/ 09 апреля 2019

Код ниже является подмножеством кода большего размера, который приводит к перекрестному запросу.Проблема заключается в том, что итоговый столбец справа, который суммирует все числовые столбцы в запросе кросс-таблицы, не вычисляется точно, поскольку он дает 0 для любых строк, имеющих нулевое значение в одном из двенадцати столбцов, которые он пытается суммировать.

Я считаю, что мне нужно добавить условие к следующей строке в коде, чтобы получить нулевое значение, если значение равно нулю.Мне просто нужно, чтобы кто-то еще раз взглянул на это.Если есть более подходящее альтернативное решение, я с радостью это также расскажу.

SUM (запись) для MX в (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'

Ответы [ 2 ]

0 голосов
/ 09 апреля 2019

Чтобы избежать нулевого результата, используйте ISNULL(Entry, 0) вместо Entry в исходном запросе.Это заменит любые возвращенные нули на 0.

0 голосов
/ 09 апреля 2019

Я думаю, что вы можете использовать функции COALESCE или IFNULL, чтобы заменить нулевое значение на 0 для вычисления суммы.Проверьте этот ответ: функция COALESCE, IFNULL или NZ (), которую можно использовать в SQL Server и MS Access

...