none
Comparando Valores RRS feed

  • Pergunta

  • Galera,

    Tenho duas tabelas e gostaria de comparar os valores e trazer os valores iguais e os valores que são nulos também. Porém não estou conseguindo desenvolver algo que funcione.

    SELECT 
    DATEPART(Hour, campo1) AS 'Hora',
    SUM(campo2) AS 'Fe',
    SUM(campo3) AS 'SiO2',
    SUM(campo4) AS 'Al2O3',
    SUM(campo5) AS 'MnO2',
    SUM(campo6) AS 'P',
    SUM(campo7) AS 'PPC',
    SUM(campo8) AS '>0,075 mm',
    SUM(campo9) AS '<0,044 mm',
    SUM(campo10) AS 'Superfície Específica',
    SUM(campo11)AS 'pH',
    SUM(campo12) AS '% Sólidos',
    SUM(campo13) AS 'Densidade Polpa',
    SUM(campo14) AS 'Densidade Sólidos'
    FROM #manejar2
    WHERE campo1 BETWEEN @StartDia AND @EndDia 
    GROUP BY DATEPART(HOUR, campo1)
    END

    Segue imagens...

    mas ela esta retornando assim:

    quinta-feira, 24 de outubro de 2013 17:04

Respostas

  • User,

    Eu simplesmente realizaria um Select com Inner Join entre estas tables você já teria a possibilidade de encontrar os dados existentes entre elas.

    Para encontrar os dados Nulos ou diferentes, você poderia também fazer um Inner Join e utilizando o operador Not Exists para trazer os dados diferentes ou IsNull através uma subquery seria possível ter exatamente o que você quer.

    Select A.Cod1, B.Cod1 From TabelaA A Inner Join TabelaB B
    On A.Cod1 = B.Cod1
    
    
    ------------------------------------------------
    
    Select A.Cod1, B.Cod1 From TabelaA Inner Join TabelaB On A.Cod1 = B.Cod1
    Where Not Exists (Select * from tabela  where Cod1 = B.Cod1)
    Algo nesta linha de raciocínio.


    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]

    sexta-feira, 25 de outubro de 2013 13:10

Todas as Respostas

  • adiciona a função ISNULL atribuindo zero para seus campos por exemplo:

    ISNULL(SUM(campo2),0) AS 'Fe',



    "A vida é um paraíso, mas os homens não o sabem e não se preocupam em sabê-lo." Fiodor Dostoievski

    quinta-feira, 24 de outubro de 2013 17:14
  • Poderia detalhar melhor. Você tem duas consultas e está executando um UNION ?

    Se for, utilize UNION ALL que vai retornar todos os valores das duas tabelas.

    Espero que seja útil para você.

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA - SQL Server 2012
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"

    quinta-feira, 24 de outubro de 2013 17:41
    Moderador
  • ll queries combined using a UNION, INTERSECT or EXCEPT operator must have an equal number of expressions in their target lists.
    quinta-feira, 24 de outubro de 2013 17:48
  • Boa tarde,

    User0234803480, não sei se entendi corretamente o que você quer fazer, mas experimente mais ou menos dessa forma:

    with 
        CTE_Horas as
        (
            select 0 as HoraCTE
            
            union all
            
            select HoraCTE + 1
            from CTE_Horas
            where HoraCTE < 23
        ),
        
        CTE_Sum as 
        (
            -- sua query aqui
        )
        
    select * 
    from CTE_Horas as h
    left join CTE_SUM as s
        on s.Hora = h.HoraCTE  

    Espero que ajude.


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

    quinta-feira, 24 de outubro de 2013 18:22
  • User,

    Eu simplesmente realizaria um Select com Inner Join entre estas tables você já teria a possibilidade de encontrar os dados existentes entre elas.

    Para encontrar os dados Nulos ou diferentes, você poderia também fazer um Inner Join e utilizando o operador Not Exists para trazer os dados diferentes ou IsNull através uma subquery seria possível ter exatamente o que você quer.

    Select A.Cod1, B.Cod1 From TabelaA A Inner Join TabelaB B
    On A.Cod1 = B.Cod1
    
    
    ------------------------------------------------
    
    Select A.Cod1, B.Cod1 From TabelaA Inner Join TabelaB On A.Cod1 = B.Cod1
    Where Not Exists (Select * from tabela  where Cod1 = B.Cod1)
    Algo nesta linha de raciocínio.


    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]

    sexta-feira, 25 de outubro de 2013 13:10