none
Como remover campos Null para somar RRS feed

  • Pergunta

  • Boa tarde, tenho uma query que me apresenta valores mensalmente, e tenho uma coluna de total, nesta query quando o campo não tem valor ele traz null, mas no total esta linha que tem o campo null não gera soma, como posso tirar o null dos campos para que possa gerar um total na coluna total no final do relatório.

    segue a minagem do resultado da query

    segue a query

    SELECT
    B1_COD as CODIGO,
    B1_DESC AS PRODUTO, 
    [Janeiro], [Fevereiro], [Março], [Abril], [Maio], [Junho], [Julho], 
    [Agosto], [Setembro], [Outubro], [Novembro], [Dezembro],
    SUM([Janeiro] + [Fevereiro] + [Março] + [Abril] + [Maio] + [Junho] + [Julho] + [Agosto] + [Setembro] + [Outubro] + [Novembro] + [Dezembro]) AS TOTAL 
    FROM ( SELECT SB.B1_COD, SB.B1_DESC, m.nm_mes, (SD.D2_QUANT * SB.B1_PESO) AS D2_QUANT FROM  SD2020 AS SD left outer join mes m on m.cd_mes = month(SD.D2_EMISSAO) 
    INNER JOIN SB1020 AS SB WITH (NOLOCK) ON SB.B1_COD = SD.D2_COD 
    WHERE SD.D_E_L_E_T_ <> '*' 
    AND SD.D2_CF IN ('5102', '5117', '5119', '5123', '5124', '5403', '5405', '6102', '6108', '6110', '6117', '6119', '6123', '6124', '6403', '6405', '7102') 
    AND YEAR(SD.D2_EMISSAO) = '2017' ) AS F PIVOT (SUM(D2_QUANT)
    FOR nm_mes IN  ([Janeiro], [Fevereiro], [Março], [Abril], [Maio], [Junho], [Julho], [Agosto], [Setembro], [Outubro], [Novembro], [Dezembro])) AS P
    GROUP BY B1_COD, B1_DESC, [Janeiro],[Fevereiro],[Março],[Abril],[Maio],[Junho],[Julho],[Agosto],[Setembro],[Outubro],[Novembro],[Dezembro]
    ORDER BY B1_DESC

    Desde já agradeço.


    JUNIOR GUERREIRO T.I

    sexta-feira, 15 de dezembro de 2017 15:23

Respostas

  • Veja se assim deu certo

    SELECT B1_COD AS CODIGO,
           B1_DESC AS PRODUTO,
           [Janeiro] = ISNULL([Janeiro], 0),
           [Fevereiro] = ISNULL([Fevereiro], 0),
           [Março] = ISNULL([Março], 0),
           [Abril] = ISNULL([Abril], 0),
           [Maio] = ISNULL([Maio], 0),
           [Junho] = ISNULL([Junho], 0),
           [Julho] = ISNULL([Julho], 0),
           [Agosto] = ISNULL([Agosto], 0),
           [Setembro] = ISNULL([Setembro], 0),
           [Outubro] = ISNULL([Outubro], 0),
           [Novembro] = ISNULL([Novembro], 0),
           [Dezembro] = ISNULL([Dezembro], 0),
           SUM(ISNULL([Janeiro], 0) + ISNULL([Fevereiro], 0) + ISNULL([Março], 0) + ISNULL([Abril], 0) + ISNULL([Maio], 0)
               + ISNULL([Junho], 0) + ISNULL([Julho], 0) + ISNULL([Agosto], 0) + ISNULL([Setembro], 0)
               + ISNULL([Outubro], 0) + ISNULL([Novembro], 0) + ISNULL([Dezembro], 0)) AS TOTAL
      FROM (   SELECT SB.B1_COD,
                      SB.B1_DESC,
                      m.nm_mes,
                      (SD.D2_QUANT * SB.B1_PESO) AS D2_QUANT
                 FROM SD2020 AS SD
                 LEFT OUTER JOIN mes m
                   ON m.cd_mes  = MONTH(SD.D2_EMISSAO)
                INNER JOIN SB1020 AS SB WITH (NOLOCK)
                   ON SB.B1_COD = SD.D2_COD
                WHERE SD.D_E_L_E_T_       <> '*'
                  AND SD.D2_CF IN ( '5102', '5117', '5119', '5123', '5124', '5403', '5405', '6102', '6108', '6110', '6117',
                                    '6119', '6123', '6124', '6403', '6405', '7102' )
                  AND YEAR(SD.D2_EMISSAO) = '2017') AS F
      PIVOT (   SUM(D2_QUANT)
                FOR nm_mes IN ([Janeiro], [Fevereiro], [Março], [Abril], [Maio], [Junho], [Julho], [Agosto], [Setembro],
                               [Outubro], [Novembro], [Dezembro])) AS P
     GROUP BY B1_COD,
              B1_DESC,
              [Janeiro],
              [Fevereiro],
              [Março],
              [Abril],
              [Maio],
              [Junho],
              [Julho],
              [Agosto],
              [Setembro],
              [Outubro],
              [Novembro],
              [Dezembro]
     ORDER BY B1_DESC;

    Wesley Neves - Brasilia-DF     

    https://wesleyneves.wordpress.com/

    SELECT Tab.[that's me:]

    FROM

    (

        VALUES

            ('Wesley Neves'),

            ('Analista.NET'),

            ('Pós Graduando em Banco de Dados com ênfase em BI'),

            ('MTA -SQL Server'),

            ('MTA -Web Developed')

    ) AS Tab ("that's me:");


    "Se a resposta for útil ou ajudar ,não esqueça de marcar"





    Wesley Neves

    • Marcado como Resposta Junior Guerreiro sexta-feira, 15 de dezembro de 2017 18:05
    sexta-feira, 15 de dezembro de 2017 17:43

Todas as Respostas

  • Use assim: 

    SUM(ISNULL(@VALOR1,0))

    sexta-feira, 15 de dezembro de 2017 15:50
  • Na linha onde está  assim

    SD.D2_QUANT * SB.B1_PESO) AS D2_QUANT

    coloque assim

    ( ISNULL(SD.D2_QUANT,0) *  ISNULL(SB.B1_PESO,0)) AS D2_QUANT

    Wesley Neves - Brasilia-DF     

    https://wesleyneves.wordpress.com/

    SELECT Tab.[that's me:]

    FROM

    (

        VALUES

            ('Wesley Neves'),

            ('Analista.NET'),

            ('Pós Graduando em Banco de Dados com ênfase em BI'),

            ('MTA -SQL Server'),

            ('MTA -Web Developed')

    ) AS Tab ("that's me:");


    "Se a resposta for útil ou ajudar ,não esqueça de marcar"





    Wesley Neves

    sexta-feira, 15 de dezembro de 2017 17:11
  • Obrigado pela atenção, mas ainda não esta dando certo, não sei se estou usando o sum em algum local errado na minha query, mas esta dando erro..

    JUNIOR GUERREIRO T.I

    sexta-feira, 15 de dezembro de 2017 17:16
  • Wesley fiz como me orientou não mudou nada, não fez alteração nenhuma no resultado.

    FROM ( SELECT SB.B1_COD, SB.B1_DESC, m.nm_mes, (ISNULL(SD.D2_QUANT,0) * ISNULL(SB.B1_PESO,0)) AS D2_QUANT FROM  SD2020 AS SD left outer join mes m on m.cd_mes = month(SD.D2_EMISSAO) 
    INNER JOIN SB1020 AS SB WITH (NOLOCK) ON SB.B1_COD = SD.D2_COD 


    JUNIOR GUERREIRO T.I

    sexta-feira, 15 de dezembro de 2017 17:22
  • Veja se assim deu certo

    SELECT B1_COD AS CODIGO,
           B1_DESC AS PRODUTO,
           [Janeiro] = ISNULL([Janeiro], 0),
           [Fevereiro] = ISNULL([Fevereiro], 0),
           [Março] = ISNULL([Março], 0),
           [Abril] = ISNULL([Abril], 0),
           [Maio] = ISNULL([Maio], 0),
           [Junho] = ISNULL([Junho], 0),
           [Julho] = ISNULL([Julho], 0),
           [Agosto] = ISNULL([Agosto], 0),
           [Setembro] = ISNULL([Setembro], 0),
           [Outubro] = ISNULL([Outubro], 0),
           [Novembro] = ISNULL([Novembro], 0),
           [Dezembro] = ISNULL([Dezembro], 0),
           SUM(ISNULL([Janeiro], 0) + ISNULL([Fevereiro], 0) + ISNULL([Março], 0) + ISNULL([Abril], 0) + ISNULL([Maio], 0)
               + ISNULL([Junho], 0) + ISNULL([Julho], 0) + ISNULL([Agosto], 0) + ISNULL([Setembro], 0)
               + ISNULL([Outubro], 0) + ISNULL([Novembro], 0) + ISNULL([Dezembro], 0)) AS TOTAL
      FROM (   SELECT SB.B1_COD,
                      SB.B1_DESC,
                      m.nm_mes,
                      (SD.D2_QUANT * SB.B1_PESO) AS D2_QUANT
                 FROM SD2020 AS SD
                 LEFT OUTER JOIN mes m
                   ON m.cd_mes  = MONTH(SD.D2_EMISSAO)
                INNER JOIN SB1020 AS SB WITH (NOLOCK)
                   ON SB.B1_COD = SD.D2_COD
                WHERE SD.D_E_L_E_T_       <> '*'
                  AND SD.D2_CF IN ( '5102', '5117', '5119', '5123', '5124', '5403', '5405', '6102', '6108', '6110', '6117',
                                    '6119', '6123', '6124', '6403', '6405', '7102' )
                  AND YEAR(SD.D2_EMISSAO) = '2017') AS F
      PIVOT (   SUM(D2_QUANT)
                FOR nm_mes IN ([Janeiro], [Fevereiro], [Março], [Abril], [Maio], [Junho], [Julho], [Agosto], [Setembro],
                               [Outubro], [Novembro], [Dezembro])) AS P
     GROUP BY B1_COD,
              B1_DESC,
              [Janeiro],
              [Fevereiro],
              [Março],
              [Abril],
              [Maio],
              [Junho],
              [Julho],
              [Agosto],
              [Setembro],
              [Outubro],
              [Novembro],
              [Dezembro]
     ORDER BY B1_DESC;

    Wesley Neves - Brasilia-DF     

    https://wesleyneves.wordpress.com/

    SELECT Tab.[that's me:]

    FROM

    (

        VALUES

            ('Wesley Neves'),

            ('Analista.NET'),

            ('Pós Graduando em Banco de Dados com ênfase em BI'),

            ('MTA -SQL Server'),

            ('MTA -Web Developed')

    ) AS Tab ("that's me:");


    "Se a resposta for útil ou ajudar ,não esqueça de marcar"





    Wesley Neves

    • Marcado como Resposta Junior Guerreiro sexta-feira, 15 de dezembro de 2017 18:05
    sexta-feira, 15 de dezembro de 2017 17:43
  • Wesley perfeito agora deu certinho. Obrigado pela ajuda.

    JUNIOR GUERREIRO T.I

    sexta-feira, 15 de dezembro de 2017 18:05