none
Retorno de Valores de uma coluna está triplicando as linhas de consulta RRS feed

  • Pergunta

  • Bom dia...!

    Meu caso é o seguinte:

    • Eu criei três perguntas no sistema e essas perguntas no retorno da consulta no SQL estão triplicando as linhas, me disseram que eu tenho que criar um sub-select para os campos, eu tentei mas não consegui.

    Estou montando da forma abaixo:   

    ============================================================================                       

    select  

    (CASE WHEN Pergunta like 'MERCKITS' THEN Resposta END) AS RespMercKits), 

    (SELECT (CASE WHEN Pergunta like 'NOME DA OBRA' THEN Resposta END) AS RespNomeObra),

    (SELECT (CASE WHEN Pergunta like 'NOME DO CLIENTE' THEN Resposta END)AS RespNomeCliente)

    from

    dbo.Orcamento o   INNER JOIN   dbo.OrcamentoResposta ocr 

       ON o.CodOrcamento_ID = ocr.CodOrcamento_id

    where

      o.CodOrcamento_ID = 142936

    ===============================================================

    Como posso fazer para que as respostas fiquem em apenas uma linha, pois estão ficando assim...?

    _____________________________________________

    ResMercKits | RespNomeObra | RespNomeCliente 

         NÃO        |       NULL            |         NULL

         NULL       |    AQUALIFE      |          NULL

         NULL       |       NULL            |   RIVALDO DIAS     

    ______________________________________________

    GOSTARIA QUE RETORNASSE COMO ABAIXO:

    ResMercKits | RespNomeObra | RespNomeCliente 

         NÃO       |    AQUALIFE     |   RIVALDO DIAS

    • Editado Gilguitar quinta-feira, 3 de outubro de 2013 14:16
    quinta-feira, 3 de outubro de 2013 13:59

Respostas

  • Bom dia,

    Experimente dessa forma:

    select   
        max(CASE WHEN Pergunta = 'MERCKITS' THEN Resposta END) AS RespMercKits, 
        max(CASE WHEN Pergunta = 'NOME DA OBRA' THEN Resposta END) AS RespNomeObra,
        max(CASE WHEN Pergunta = 'NOME DO CLIENTE' THEN Resposta END) AS RespNomeCliente
    from -- ...

    Espero que ajude.


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

    • Marcado como Resposta Gilguitar quinta-feira, 3 de outubro de 2013 15:08
    quinta-feira, 3 de outubro de 2013 14:27

Todas as Respostas

  • Você está fazendo 3 selects diferente nesta consulta, Gilguitar. 

    Tente desta forma:

    SELECT 
    CASE 
    WHEN Pergunta like 'MERCKITS' 
    THEN Resposta 
    END AS RespMercKits, 
    
    CASE 
    WHEN Pergunta like 'NOME DA OBRA' 
    THEN Resposta 
    END AS RespNomeObra,
    
    CASE 
    WHEN Pergunta like 'NOME DO CLIENTE' 
    THEN Resposta 
    END AS RespNomeCliente
    
    FROM dbo.Orcamento o   
    INNER JOIN   dbo.OrcamentoResposta ocr 
    ON o.CodOrcamento_ID = ocr.CodOrcamento_id
    where o.CodOrcamento_ID = 142936


    Leonardo D'Amato

    quinta-feira, 3 de outubro de 2013 14:07
  • Bom dia,

    Experimente dessa forma:

    select   
        max(CASE WHEN Pergunta = 'MERCKITS' THEN Resposta END) AS RespMercKits, 
        max(CASE WHEN Pergunta = 'NOME DA OBRA' THEN Resposta END) AS RespNomeObra,
        max(CASE WHEN Pergunta = 'NOME DO CLIENTE' THEN Resposta END) AS RespNomeCliente
    from -- ...

    Espero que ajude.


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

    • Marcado como Resposta Gilguitar quinta-feira, 3 de outubro de 2013 15:08
    quinta-feira, 3 de outubro de 2013 14:27
  • Leonardo, 

    Bom dia...

    Primeiramente muito obrigado por responder.

    • Testei na minha base e continua triplicando as linhas. 

    Usei o comando MAX e dei certo valei mesmo meu brother...fica na paz...! 

    quinta-feira, 3 de outubro de 2013 15:07