none
Valores de Venda RRS feed

  • Pergunta

  • Boa tarde,

    Tenho uma tabela que lista todas as lojas (cod, loja etc) e uma outra tabela tenho os registros de vendas realizadas (data, vendedor, valor, cod_loja, loja etc).

    Como eu exibo os resultados de vendas dia a dia, caso uma loja em especifico não tenha feito nenhuma venda ?

    ex.: 

    loja          data                    valor

    a        01/07/2017               100

    b        01/07/2017               200

    c        02/07/2017               100

    c        03/07/2017               100

    Preciso mostrar que a loja C não teve venda no dia 01/07/2017, conforme exemplo abaixo:

    loja          data                    valor

    c        01/07/2017               0

    segunda-feira, 10 de julho de 2017 19:00

Respostas

  • Acredito que seja basta fazer assim

    SELECT L.idLoja,L.Nome,V.Data, ValorVenda = SUM(ISNULL(V.Valor,0)) FROM dbo.Lojas AS L
    LEFT JOIN dbo.Vendas AS V ON V.IdLoja = L.idLoja
    GROUP BY  L.idLoja,L.Nome,V.Data
    ORDER BY L.Nome


    Wesley Neves - Brasilia-DF

     
    wesley.si.neves@gmail.com
    MTA-SQL Server
    MTA- Web Development
    Analista Desenvolvedor.NET
    Pós-Graduando em Banco de Dados 
    "Se a resposta for útil ou ajudar ,não esqueça de marcar"




    Wesley Neves

    • Marcado como Resposta Edvaldo A quinta-feira, 13 de julho de 2017 18:25
    segunda-feira, 10 de julho de 2017 20:07
  • Deleted
    • Marcado como Resposta Edvaldo A terça-feira, 11 de julho de 2017 13:16
    segunda-feira, 10 de julho de 2017 20:18

Todas as Respostas

  • Fiz um exemplo básico 

    CREATE TABLE Lojas
    (
     idLoja INT NOT NULL PRIMARY KEY IDENTITY(1,1),
     Nome VARCHAR(50)
    
    )
    
    INSERT INTO dbo.Lojas
            ( Nome )
    VALUES  ( 'Loja A'),( 'Loja B'),( 'Loja C'),( 'Loja D')
    
    CREATE TABLE Vendas
    (
     idVenda INT NOT NULL PRIMARY KEY IDENTITY(1,1),
     IdLoja INT FOREIGN KEY REFERENCES dbo.Lojas(idLoja),
     Data DATETIME ,
     Valor DECIMAL(18,2),
    
    )
    
    INSERT INTO dbo.Vendas
            ( IdLoja, Data, Valor )
    VALUES
      ( 1,GETDATE(),100  ),( 1,DATEADD(DAY,-4,GETDATE()),100  ),( 1,DATEADD(DAY,-4,GETDATE()),100  ),
       ( 2,GETDATE(),200  ),( 2,DATEADD(DAY,-1,GETDATE()),200  ),( 2,DATEADD(DAY,-2,GETDATE()),200  )
    
    
    DECLARE @DataFiltroInicio DATETIME  = DATEFROMPARTS(2017,07,01);
    DECLARE @DataFiltroTermino DATETIME  = DATEFROMPARTS(2017,07,31);
    
    
    WITH Datas AS (
      
      SELECT  @DataFiltroInicio Data
      UNION ALL
       SELECT DATEADD(DAY,1,R.Data)
       FROM  Datas R
       WHERE DATEADD(DAY,1,R.Data) < @DataFiltroTermino
      
    )
    SELECT DT.Data,VD.idLoja ,
                   VD.Nome ,
                  ValorVenda = ISNULL( VD.ValorVenda,0) FROM Datas DT
    LEFT JOIN
    (
      SELECT L.idLoja,L.Nome,V.Data, ValorVenda = ISNULL(V.Valor,0) FROM dbo.Lojas AS L
      LEFT JOIN dbo.Vendas AS V ON V.IdLoja = L.idLoja
    ) AS VD ON CAST(DT.Data AS DATE) =  CAST(VD.Data AS DATE)
    
    


    Wesley Neves - Brasilia-DF

     
    wesley.si.neves@gmail.com
    MTA-SQL Server
    MTA- Web Development
    Analista Desenvolvedor.NET
    Pós-Graduando em Banco de Dados 
    "Se a resposta for útil ou ajudar ,não esqueça de marcar"




    Wesley Neves

    • Marcado como Resposta Edvaldo A segunda-feira, 10 de julho de 2017 19:47
    • Não Marcado como Resposta Edvaldo A segunda-feira, 10 de julho de 2017 19:53
    segunda-feira, 10 de julho de 2017 19:39
  • Wesley obrigado pela ajuda !

    No exemplo que passou, as lojas C e D, não tiveram vendas, porém idloja e nome da loja não são exibidos no resultado para as data onde não houveram vendas.

    segunda-feira, 10 de julho de 2017 19:56
  • Acredito que seja basta fazer assim

    SELECT L.idLoja,L.Nome,V.Data, ValorVenda = SUM(ISNULL(V.Valor,0)) FROM dbo.Lojas AS L
    LEFT JOIN dbo.Vendas AS V ON V.IdLoja = L.idLoja
    GROUP BY  L.idLoja,L.Nome,V.Data
    ORDER BY L.Nome


    Wesley Neves - Brasilia-DF

     
    wesley.si.neves@gmail.com
    MTA-SQL Server
    MTA- Web Development
    Analista Desenvolvedor.NET
    Pós-Graduando em Banco de Dados 
    "Se a resposta for útil ou ajudar ,não esqueça de marcar"




    Wesley Neves

    • Marcado como Resposta Edvaldo A quinta-feira, 13 de julho de 2017 18:25
    segunda-feira, 10 de julho de 2017 20:07
  • Deleted
    • Marcado como Resposta Edvaldo A terça-feira, 11 de julho de 2017 13:16
    segunda-feira, 10 de julho de 2017 20:18