none
Ajuda em Sql RRS feed

  • Pergunta

  • Pessoal,
    bom dia!
    estou passando pelo seguinte problema:
    -Tenho duas consultas que são praticamente a mesma coisa, mas de tabelas diferentes:
    SELECT DESCRICAO, DATA, SUM(PESO) PESOB  FROM dbo.VIEW_BATIDAS  WHERE DATA  BETWEEN '2011-06-01 00:00:00.000' AND '2011-06-20 00:00:00.000' GROUP BY DATA
    SELECT DESCRICAO, DATA, SUM(PESO) PESOB FROM dbo.VIEW_GUARDIAN WHERE DATA  BETWEEN '2011-06-01 00:00:00.000' AND '2011-06-20 00:00:00.000' GROUP BY DATA,
    - Posso relacionar por descrição e data.
    - Acontece o seguinte, tem datas que tem algum peso, outras não tem. O que eu queria fazer era pegar todas as data e seus respectivos pesos e se não tivesse nenhum registro em uma tabela e der na aula, queria que aparece 0 no peso
    da forma que está fica desse jeito, pois estou relacionando por data
    descricao data                        peso1       peso2
     aaaaa 01/06                       2            3
     
     aaaaa 03/06                       3            4
     bbbbb 01/06                       4            5
     ccccc          04/06                       5            5
     ccccc 07/06                       6            7
     ddddd 08/06                       5            5
     eeeee 09/06                       6            7
     eeeee 10/06                       5            5
     eeeee 11/06                       6            7
    estou tentando alguma coisa mais ou menos assim:
    descricao data                        peso1       peso2
     aaaaa 01/06                       2            3
     aaaaa 02/06                       0            3                       pois no dia 2 não teve movimentação em ambas as tabelas, somente em uma delas
     
     aaaaa 03/06                       3            4
     bbbbb 01/06                       4            5
     ccccc         04/06                       5            5
     ccccc         05/06                       2            0                       pois no dia 2 não teve movimentação em ambas as tabelas, somente em uma delas
     ccccc         06/06                       5            5                       pois no dia 2 não teve movimentação em ambas as tabelas, somente em uma delas
     ccccc 07/06                       6            7
     ddddd 08/06                       5            5
     eeeee 09/06                       6            7
     eeeee 10/06                       5            5
     eeeee 11/06                       6            7

    HENRY CHARRIERE
    sexta-feira, 24 de junho de 2011 13:54

Respostas

  • Boa tarde!

    Henry,

    Se entendi o que você quer acho que o código abaixo resolve seu problema:

    SELECT DESCRICAO, DATA, isNull(SUM(IsNull(PESO,0)),0) PESOB FROM dbo.VIEW_BATIDAS WHERE DATA BETWEEN '2011-06-01 00:00:00.000' AND '2011-06-20 00:00:00.000' GROUP BY DATA
    SELECT DESCRICAO, DATA, isNull(SUM(IsNull(PESO,0)),0) PESOB FROM dbo.VIEW_GUARDIAN WHERE DATA BETWEEN '2011-06-01 00:00:00.000' AND '2011-06-20 00:00:00.000' GROUP BY DATA
    
    A função IsNull tem dois parâmetros:
    1. O primeiro você é o campo que você vai testar caso ele esteja com o valor NULL
    2. O segundo é o valor que você vai atribuir no caso de ele estar NULL
    A função retorna o próprio campo no caso de não estar NULL e retorna o valor informado no segundo parâmetro no caso de estar NULL.
    Mais sobre essa função você encontra no link: http://msdn.microsoft.com/en-us/library/ms184325.aspx

    Espero ter ajudado.
    Att,

    Fredy Esmeraldo
    Microsoft MCP, MCTS, MCITP Database Administrator 2008
    Visite o meu blog: http://fredyesmeraldo.wordpress.com
    Me siga no twitter: @fredyesmeraldo
    LinkedIN: Fredy Esmeraldo
    **Ajude a melhorar o sistema de busca do fórum.Marque a(s) resposta(s) que foram úteis**
    **Se esta resposta solucionou a questão, então, por favor, marque-a como resposta.**
    • Sugerido como Resposta Eder Costa quinta-feira, 14 de julho de 2011 17:11
    • Marcado como Resposta Eder Costa segunda-feira, 18 de julho de 2011 12:42
    quinta-feira, 7 de julho de 2011 17:30

Todas as Respostas

  • Henry, bom dia. A postagem ficou meio confusa.

    Você seleciona o campo Descricao, mas não agrupa por ele...

    Por favor, post novamente a forma que você está usando para chegar ao resultado que tem hoje. E se possível, post o conteúdo das suas view's.


    Roberson Ferreira - Database Developer

    Se esta sugestão for útil, por favor, classifique-a como útil.
    Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    sexta-feira, 24 de junho de 2011 14:05
    Moderador
  • Pelo o que eu entendi o peso que retornar NULL você quer colocar 0 isso?

    SELECT DESCRICAO, DATA, SUM(ISNULL(PESO,0)) PESOB  FROM dbo.VIEW_BATIDAS  WHERE DATA BETWEEN '2011-06-01 00:00:00.000' AND '2011-06-20 00:00:00.000' GROUP BY DATA

     

    Abraço


    Vinícius Kleber
    quarta-feira, 6 de julho de 2011 19:56
  • Boa tarde!

    Henry,

    Se entendi o que você quer acho que o código abaixo resolve seu problema:

    SELECT DESCRICAO, DATA, isNull(SUM(IsNull(PESO,0)),0) PESOB FROM dbo.VIEW_BATIDAS WHERE DATA BETWEEN '2011-06-01 00:00:00.000' AND '2011-06-20 00:00:00.000' GROUP BY DATA
    SELECT DESCRICAO, DATA, isNull(SUM(IsNull(PESO,0)),0) PESOB FROM dbo.VIEW_GUARDIAN WHERE DATA BETWEEN '2011-06-01 00:00:00.000' AND '2011-06-20 00:00:00.000' GROUP BY DATA
    
    A função IsNull tem dois parâmetros:
    1. O primeiro você é o campo que você vai testar caso ele esteja com o valor NULL
    2. O segundo é o valor que você vai atribuir no caso de ele estar NULL
    A função retorna o próprio campo no caso de não estar NULL e retorna o valor informado no segundo parâmetro no caso de estar NULL.
    Mais sobre essa função você encontra no link: http://msdn.microsoft.com/en-us/library/ms184325.aspx

    Espero ter ajudado.
    Att,

    Fredy Esmeraldo
    Microsoft MCP, MCTS, MCITP Database Administrator 2008
    Visite o meu blog: http://fredyesmeraldo.wordpress.com
    Me siga no twitter: @fredyesmeraldo
    LinkedIN: Fredy Esmeraldo
    **Ajude a melhorar o sistema de busca do fórum.Marque a(s) resposta(s) que foram úteis**
    **Se esta resposta solucionou a questão, então, por favor, marque-a como resposta.**
    • Sugerido como Resposta Eder Costa quinta-feira, 14 de julho de 2011 17:11
    • Marcado como Resposta Eder Costa segunda-feira, 18 de julho de 2011 12:42
    quinta-feira, 7 de julho de 2011 17:30
  • Henry,

    Você esta tentando fazer um Union entre estas duas querys?


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]
    quinta-feira, 7 de julho de 2011 22:03