Instrução SQL - CASE WHEN

7 respostas
D

Como faço pra executar esse SQL aqui:

CASE WHEN et2.NUM_SERVIDOR > 1 THEN CAST(((SUM(DECODE(nota_recurso.CO_QUESITOS_AVAL,1,nota_recurso.VL_NOTA,NULL)) + SUM(DECODE(nota_recurso.CO_QUESITOS_AVAL,2,nota_recurso.VL_NOTA,NULL)) + SUM(DECODE(nota_recurso.CO_QUESITOS_AVAL,3,nota_recurso.VL_NOTA,NULL)) + SUM(DECODE(nota_recurso.CO_QUESITOS_AVAL,4,nota_recurso.VL_NOTA,NULL)) + SUM(DECODE(nota_recurso.CO_QUESITOS_AVAL,5,nota_recurso.VL_NOTA,NULL)))/COUNT(*))*6/10 AS DECIMAL(4, 2)) CAST(((SUM(DECODE(nota_reconsideracao.CO_QUESITOS_AVAL,1,nota_reconsideracao.VL_NOTA,NULL)) + SUM(DECODE(nota_reconsideracao.CO_QUESITOS_AVAL,2,nota_reconsideracao.VL_NOTA,NULL)) + SUM(DECODE(nota_reconsideracao.CO_QUESITOS_AVAL,3,nota_reconsideracao.VL_NOTA,NULL)) + SUM(DECODE(nota_reconsideracao.CO_QUESITOS_AVAL,4,nota_reconsideracao.VL_NOTA,NULL)) + SUM(DECODE(nota_reconsideracao.CO_QUESITOS_AVAL,5,nota_reconsideracao.VL_NOTA,NULL)))/COUNT(*))*6/10 AS DECIMAL(4, 2)) CAST(((SUM(DECODE(aq.CO_QUESITOS_AVALIADOS, 1, aq.VL_NOTA,NULL)) + SUM(DECODE(aq.CO_QUESITOS_AVALIADOS, 2, aq.VL_NOTA,NULL)) + SUM(DECODE(aq.CO_QUESITOS_AVALIADOS, 3, aq.VL_NOTA,NULL)) + SUM(DECODE(aq.CO_QUESITOS_AVALIADOS, 4, aq.VL_NOTA,NULL)) + SUM(DECODE(aq.CO_QUESITOS_AVALIADOS, 5, aq.VL_NOTA,NULL)))/COUNT(*))*6/10 AS DECIMAL(4, 2)) END

Precisava que quando o NUM_SERVIDOR fosse maior do que 1 executasse esses tres casts, mas nao funciona assim =[

7 Respostas

drsmachado

Creio que o problema seja por que todo CASE tem, no mínimo um WHEN e um ELSE.

evertonsilvagomesjav

Mas vc tem alguma ideia pra eu resolver isso?

Pq nesse caso ai tem um WHEN

ManoJava

Mas e no caso de não atender essa condição, o que ele deve fazer? isso que vc deve colocar no else.

Att.

drsmachado

Mas vc tem alguma ideia pra eu resolver isso?

Pq nesse caso ai tem um WHEN
Porra, você tem dois perfis no guj?
Sim, tem o WHEN, mas e o ELSE, cadê?
Como disse o nosso camarada ali, o que fazer se não for igual a 1?

Hebert_Coelho

Mas vc tem alguma ideia pra eu resolver isso?

Pq nesse caso ai tem um WHEN
Porra, você tem dois perfis no guj?MAhuahuahuahuahuahuuhauhauha

Tive que rir dessa! :lol: :lol: :lol: :lol: :lol:

fabiocsilva

O case espera um único valor. Então no caso você precisaria de três:

select a,b,c (case
         when xxx then CAST1
end) as d, (case
         when xxx then CAST2
end) as e,  (case
         when xxx then CAST3
end) as f
charleston10
Ta funfando... de uma olhada
SELECT *,
                        CASE WHEN (
                            SELECT COUNT(*)
                            FROM vinculacao_email
                            WHERE vinculacao_email.id_usuario = 2
                            AND vinculacao_email.id_usuario_vinculado = usuarios.id
                        ) > 0 THEN 1
                        ELSE 0
                        END AS possui_vinculo
                    FROM usuarios
                    ORDER BY nome ASC
Criado 12 de novembro de 2012
Ultima resposta 12 de nov. de 2012
Respostas 7
Participantes 7