[firebase-br] Erro ao Somar com Select CASE

Eduardo Belo beloelogica em gmail.com
Seg Out 26 01:57:32 -03 2009


Olá Pessoal!



O que há de errado na Soma do CASE no SELECT abaixo:

SELECT
    A.ID_AVALIACAO,
    A.ID_SERVIDOR,
    A.TRIMESTRE,
    A.ID_AVALIADOR,
    A.TOTAL AS TOTAL_PONTOS,
    /* Aqui a formula do resultado final */
    (COALESCE(SUM(CASE A.ID_AVALIADOR WHEN 1 THEN A.TOTAL*2 END),0.0) +
    COALESCE(SUM(CASE B.ID_AVALIADOR WHEN 2 THEN B.TOTAL*6 END),0.0))
/ 8 AS RESULTADO_FINAL
FROM AVALIACOES A, AVALIACOES B
WHERE (B.ID_AVALIACAO <= A.ID_AVALIACAO) AND (B.ID_SERVIDOR =
A.ID_SERVIDOR) AND (B.TRIMESTRE >= A.TRIMESTRE)
GROUP BY
   A.ID_AVALIACAO,
    A.ID_SERVIDOR,
    A.TRIMESTRE,
    A.ID_AVALIADOR,
    A.TOTAL

Exemplo com 10 registros:

ID_AVALIACAO  ID_SERVIDOR  TRIMESTRE  ID_AVALIADOR  TOTAL_PONTOS
RESULTADO_FINAL
------------  -----------  ---------  ------------  ------------  --------------
           1            1  012009                1           280           70,00
           2            1  012009                2           210          157,50
           3            1  022009                1           150           37,50
           4            1  022009                2            70           52,50
           5            2  012009                1           185           46,25
           6            2  012009                2           225          168,75
           7            1  032009                1         202,5           50,62
           8            1  032009                2           205          153,75
           9            2  022009                1           185           46,25
          10            2  022009                2           250          187,50

O resultado que eu quero na coluna RESULTADO_FINAL é:

RESULTADO FINAL
-----------------------------
0,00
227,50
0,00
90,00
0,00
215,00
0,00
204,38
0,00
233,75

Essa base é de um Sistema de avaliação de Desempenho de Funcionários,
onde há avaliação do próprio funcionario e do seu chefe, que está identificado
no ID_AVALIADOR com a opções 1 = funcionário e 2 = chefia. Cada funcionário
só pode ter 2 avaliações por trimestre e a pontuação final tem a
seguinte formula:

(Total Funcionario*2) + (Total Chefia*6) / 8 que já está totalizada
sem a formula
na coluna TOTAL_PONTOS

Exemplo da primeira avaliação(ID_AVALIACAO 1 e 2:

(280*2)+(210*6) / 8 = 227,50

Quando eu faço a soma dos resultados dos dois case's ele me retorna
individualmente,
eu preciso que ele faça como no exemplo acima.

Agradeço antecipadamente a todos que ajudarem.


Mais detalhes sobre a lista de discussão lista