none
Incrementar PIVOT RRS feed

  • Pergunta

  • Olá pessoal,

    Estou tentando incrementar um pivot table baseado nesse link (Como aplicar um select dinâmico; Listagem 3). O meu SQL ficou como abaixo mas não está retornando nada. Tem como corrigir isso ou fazer uma outra instrução SQL que faça isso?

    DECLARE @SQLStr VARCHAR(5000)
    SET @SQLStr = ''

    SELECT @SQLStr = @SQLStr + EXAME + ', '
    FROM
    (SELECT EXAME = CASE A.REALIZADO WHEN 0 THEN '( ) ' + B.NOMEEXAME ELSE '(X) ' + B.NOMEEXAME END
    FROM VEXAMESPEND A (NOLOCK)
    INNER JOIN VEXAMES B (NOLOCK) ON (A.CODCOLIGADA = B.CODCOLIGADA AND A.CODEXAME = B.CODEXAME)
    WHERE CHAPA = '00047'
    ) ASA
    SET @SQLStr = LEFT(@SQLStr,len(@SQLStr))

    Grato,

    Ilano.

    sexta-feira, 30 de outubro de 2015 18:28

Respostas

  • Ilano,

    Pode ser uma constatação boba, mas, na tua consulta, você só faz set no final, mas não pede para exibir os dados. Nem com PRINT ou um SELECT. Se for isso, logo após o teu SET, faça um SELECT @SQLStr ou PRINT @SQLStr.

    Eu vi que você diz que se executar a consulta sem fazer a concatenação dos valores, você tem retorno. Pode nos passar um print do retorno que você tem?

    []'s!


    /* Logan Destefani Merazzi - DBA | @LoganMerazzi | http://www.merazzi.eti.br
    Se a resposta for útil, vote nela. Se resolveu, marque-a como resposta. */

    • Marcado como Resposta Marcos SJ segunda-feira, 2 de novembro de 2015 14:18
    sábado, 31 de outubro de 2015 21:39

Todas as Respostas

  • Boa tarde,

    Acredito que pode existir algum campo com conteúdo NULL. Se você tentar concatenar qualquer string com um campo contendo NULL o resultado da concatenação vai ser NULL. Se for essa a causa, use a função ISNULL para substituir o NULL para algum conteúdo para evitar que isso aconteça.

    Abraço,

    Antônio Cesar

    sexta-feira, 30 de outubro de 2015 20:47
  • Boa noite Antônio César,

    Primeiro, obrigado pela atenção. Bom, eu executo apenas a consulta abaixo me é retornado informação. Acho que, no caso, o problema é outro mesmo.

    SELECT DISTINCT EXAME = CASE A.REALIZADO WHEN 0 THEN '( ) ' + B.NOMEEXAME ELSE '(X) ' + B.NOMEEXAME END
    FROM VEXAMESPEND A (NOLOCK)
    INNER JOIN VEXAMES B (NOLOCK) ON (A.CODCOLIGADA = B.CODCOLIGADA AND A.CODEXAME = B.CODEXAME)
    WHERE CHAPA = '00047'
    • Editado ilanocf sexta-feira, 30 de outubro de 2015 22:00
    sexta-feira, 30 de outubro de 2015 21:53
  • O problema continua. Só estou publicando a consulta alterada para evitar valores nulos.

    DECLARE @SQLStr VARCHAR(5000)
    SET @SQLStr = ''

    SELECT @SQLStr = @SQLStr + A.EXAME + ', '
    FROM
    (SELECT EXAME = CASE A.REALIZADO WHEN 0 THEN '(   ) ' +
    (CASE WHEN B.NOMEEXAME IS NOT NULL THEN B.NOMEEXAME ELSE '' END) ELSE
    '( X ) ' + (CASE WHEN B.NOMEEXAME IS NOT NULL THEN B.NOMEEXAME ELSE '' END) END
    FROM VEXAMESPEND A (NOLOCK)
    INNER JOIN VEXAMES B (NOLOCK) ON (A.CODCOLIGADA = B.CODCOLIGADA AND A.CODEXAME = B.CODEXAME)
    WHERE CHAPA = '00047') AS A
    SET @SQLStr = LEFT(@SQLStr,len(@SQLStr))


    sexta-feira, 30 de outubro de 2015 21:59
  • Boa noite Antônio César,

    Primeiro, obrigado pela atenção. Bom, eu executo apenas a consulta abaixo me é retornado informação. Acho que, no caso, o problema é outro mesmo.

    SELECT DISTINCT EXAME = CASE A.REALIZADO WHEN 0 THEN '( ) ' + B.NOMEEXAME ELSE '(X) ' + B.NOMEEXAME END
    FROM VEXAMESPEND A (NOLOCK)
    INNER JOIN VEXAMES B (NOLOCK) ON (A.CODCOLIGADA = B.CODCOLIGADA AND A.CODEXAME = B.CODEXAME)
    WHERE CHAPA = '00047'

    Boa noite.

    Qual é o resultado retornado pela consulta?

    sábado, 31 de outubro de 2015 00:36
  • Cara, não está retornando nada. Esse script funciona em todas as versões do SQL Server? Eu utilizo o SQL Server 2008 R2.
    sábado, 31 de outubro de 2015 20:00
  • Ilano,

    Pode ser uma constatação boba, mas, na tua consulta, você só faz set no final, mas não pede para exibir os dados. Nem com PRINT ou um SELECT. Se for isso, logo após o teu SET, faça um SELECT @SQLStr ou PRINT @SQLStr.

    Eu vi que você diz que se executar a consulta sem fazer a concatenação dos valores, você tem retorno. Pode nos passar um print do retorno que você tem?

    []'s!


    /* Logan Destefani Merazzi - DBA | @LoganMerazzi | http://www.merazzi.eti.br
    Se a resposta for útil, vote nela. Se resolveu, marque-a como resposta. */

    • Marcado como Resposta Marcos SJ segunda-feira, 2 de novembro de 2015 14:18
    sábado, 31 de outubro de 2015 21:39
  • Logan Destefani Merazzi, cara! Era isso mesmo!!!! Agora sim, funcionou perfeitinho!!!!

    Obrigado pela atenção de todos!


    • Editado Marcos SJ quarta-feira, 4 de novembro de 2015 13:36 Edição de nome do usuário
    terça-feira, 3 de novembro de 2015 19:46