none
preencher linhas mesmo não vindo na consulta RRS feed

  • Pergunta

  • boa tarde,

    tenho um select que me retornar as vendas dias do mes corrente, o problema é que quando o dia não tem venda ele não retorna nada e eu precisso que me retorne o dia com valor 0.

    hoje minha consulta retorna assim:

    Dia Valor
    17 0
    15 15
    20 30

    e eu preciso que me retorne assim:

    Dia Valor
    1 0
    2 15
    3 30
    4 0
    5 0
    6 0
    7 0
    8 0
    9 0
    10 0
    11 0
    12 0
    13 0
    14 0

    essa é minha consulta:

    Select DatePart(DAY, Dat_Movime) as Label,  
    Replace( SUM(Val_Nota), ',', '.') as 'Value',      
    '192,192,192' RGB  
    from NFECB   
    where Sta_NfeCab = 'F'
      and Tip_EntSai = 'E'        
      and Tip_Operac = 'C' 
      and ISNULL(Flg_Estorno,0) = 0       
      and Dat_Movime between '2018-08-01' and '2018-08-30' 
       group by DatePart(DAY, Dat_Movime) 

    Grato:

    Paulo

    quinta-feira, 30 de agosto de 2018 20:26

Respostas

  • Boa tarde,

    Experimente fazer uns testes mais ou menos dessa forma:

    declare @DataIni date;
    declare @DataFim date;
    set @DataIni = '2018-08-01;
    set @DataFim = '2018-08-30';
    
    with 
        CTE_Datas as
        (
            select 
                @DataIni as Data,
                DATEPART(DAY, @DataIni) as Dia
    
            union all
    
            select
                DATEADD(DAY, 1, Data),
                DATEPART(DAY, DATEADD(DAY, 1, Data))
            from CTE_Datas
            where
                Data < @DataFim
        ),
    
        CTE_Sum as
        (
            Select 
                DatePart(DAY, Dat_Movime) as Label,  
                SUM(Val_Nota) as 'Value'
            from NFECB   
            where 
                Sta_NfeCab = 'F' and 
                Tip_EntSai = 'E' and 
                Tip_Operac = 'C' and 
                ISNULL(Flg_Estorno,0) = 0 and 
                Dat_Movime between '2018-08-01' and '2018-08-30' 
            group by 
                DatePart(DAY, Dat_Movime) 
        )
    
    Select 
        d.Dia as Label,
        Replace(coalesce(s.Value, 0), ',', '.') as 'Value',      
        '192,192,192' as RGB
    from CTE_Datas as d
    left join CTE_Sum as s 
        on s.Dia = d.Dia
    

    Espero que ajude


    Assinatura: http://www.imoveisemexposicao.com.br

    • Sugerido como Resposta Junior Galvão - MVPMVP sexta-feira, 31 de agosto de 2018 12:42
    • Marcado como Resposta Paulosix sexta-feira, 31 de agosto de 2018 13:53
    quinta-feira, 30 de agosto de 2018 20:59