none
Adicionar uma coluna de % em uma Pivot table RRS feed

  • Pergunta

  • Pessoal, boa noite, usamos aqui a versão 10.50.4000, montei essa consulta de pivol table e gostaria de adicionar uma coluna de % ao lado de "REGULAR", "SIM" e "NAO".

    SELECT
        ANO,
        NOME,
        REGULAR = COUNT(
            CASE
                WHEN CD_STATUS_RECOMENDACAO = 1
                THEN CD_STATUS_RECOMENDACAO
            END),
        SIM = COUNT(
            CASE
                WHEN CD_STATUS_RECOMENDACAO = 2
                THEN CD_STATUS_RECOMENDACAO
            END),
        NAO = COUNT(
            CASE
                WHEN CD_STATUS_RECOMENDACAO = 3
                THEN CD_STATUS_RECOMENDACAO
            END)
    FROM
        V_ACOMPANHAMENTO_RECOMENDACAO
    GROUP BY
        ANO,
        NOME

    Como exemplo tem esse resultado:

    ANO   NOME                                               REGULAR SIM NAO 
    ----- -------------------------------------------------- ------- --- --- 
    2.015 Normatização Interna                               0       0   40  
    2.016 Ocorrências - Cadastradas em todas as informações  1       3   0   
    Então seria a dicionar uma coluna de %, por exemplo no ano de 2016 "SIM" representou 75% (3/4*100) das ocorrências.

    sexta-feira, 5 de fevereiro de 2016 21:28

Respostas

  • Boa noite,

    Experimente dessa forma:

    WITH CTE_COUNT AS
    (
        SELECT
            ANO,
            NOME,
            REGULAR = COUNT(
                CASE
                    WHEN CD_STATUS_RECOMENDACAO = 1
                    THEN CD_STATUS_RECOMENDACAO
                END),
            SIM = COUNT(
                CASE
                    WHEN CD_STATUS_RECOMENDACAO = 2
                    THEN CD_STATUS_RECOMENDACAO
                END),
            NAO = COUNT(
                CASE
                    WHEN CD_STATUS_RECOMENDACAO = 3
                    THEN CD_STATUS_RECOMENDACAO
                END),
            TOTAL = COUNT(1) 
        FROM
            V_ACOMPANHAMENTO_RECOMENDACAO
        GROUP BY
            ANO,
            NOME
    )
    
    SELECT
        ANO,
        NOME,
        REGULAR,
        100.0 * REGULAR / TOTAL AS REGULAR_PERC,
        SIM,
        100.0 * SIM / TOTAL AS SIM_PERC,
        NAO,
        100.0 * NAO / TOTAL AS NAO_PERC
    FROM CTE_COUNT

    Espero que ajude


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

    • Sugerido como Resposta FLauffer sábado, 6 de fevereiro de 2016 05:14
    • Marcado como Resposta Marcos SJ quarta-feira, 10 de fevereiro de 2016 13:49
    sexta-feira, 5 de fevereiro de 2016 22:20

Todas as Respostas

  • Boa noite,

    Experimente dessa forma:

    WITH CTE_COUNT AS
    (
        SELECT
            ANO,
            NOME,
            REGULAR = COUNT(
                CASE
                    WHEN CD_STATUS_RECOMENDACAO = 1
                    THEN CD_STATUS_RECOMENDACAO
                END),
            SIM = COUNT(
                CASE
                    WHEN CD_STATUS_RECOMENDACAO = 2
                    THEN CD_STATUS_RECOMENDACAO
                END),
            NAO = COUNT(
                CASE
                    WHEN CD_STATUS_RECOMENDACAO = 3
                    THEN CD_STATUS_RECOMENDACAO
                END),
            TOTAL = COUNT(1) 
        FROM
            V_ACOMPANHAMENTO_RECOMENDACAO
        GROUP BY
            ANO,
            NOME
    )
    
    SELECT
        ANO,
        NOME,
        REGULAR,
        100.0 * REGULAR / TOTAL AS REGULAR_PERC,
        SIM,
        100.0 * SIM / TOTAL AS SIM_PERC,
        NAO,
        100.0 * NAO / TOTAL AS NAO_PERC
    FROM CTE_COUNT

    Espero que ajude


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

    • Sugerido como Resposta FLauffer sábado, 6 de fevereiro de 2016 05:14
    • Marcado como Resposta Marcos SJ quarta-feira, 10 de fevereiro de 2016 13:49
    sexta-feira, 5 de fevereiro de 2016 22:20
  • Obrigado gapimex, acabei de testar, perfeito.
    quarta-feira, 10 de fevereiro de 2016 17:33