select A16.*
,CASE WHEN ( A16.AUTORIZA IS NULL
AND ( SELECT COUNT(*)
FROM OWNER.TABELA
WHERE CAMPO1 = 1
AND CAMPO2 = '2171200006643'
AND NUM_RIESGO = 470 ) <> ( SELECT COUNT(*)
FROM OWNER.TABELA
WHERE CAMPO1 = 1
AND CAMPO2 = '2171200006643'
AND RISCO = 470
AND AUTORIZA = 'S' )
) THEN 'FALHA NA APROVAÇÃO'
ELSE 'APROVADO'
END ANALISE
from OWNER.TABELA A16
where A16.CAMPO1 = 1
and A16.CAMPO2 = '2171200006643'
AND A16.RISCO = 470
Neste caso, trata-se de uma tabela de parametrização que indica se determinado processo foi finalizado com sucesso ou não. Caso ele tenha sido finalizado com sucesso o campo AUTORIZA é preenchido e o que eu pretendia com este script era verificar se a quantidade de registros para determinada chave é mesma quantidade para os mesmos registros que possuem o referido campo preenchido, isto porque todos os campo são listados independentes de terem sido preenchidos ou não. Dai eu pego e comparo as duas quantidades, se as mesmas forem iguais isto indica que todos os registros foram aprovados, ou autorizado.
Bem, talvez alguém questione: Mas por quê você não traz apenas os campos preenchidos então?
Por que eu preciso saber os campos que não foram preenchidos também, porque é gerado um código de erro. Eu estou apenas tentando facilitar a análise uma vez que temos que analisar uma sequencia de várias tabelas e algumas flags em específico.
Não sei se ficou claro, deu pra entender? Será que o CUBE ou o ROLLUP ajudaria neste caso?
Se alguém tiver alguma sugestão, fico no aguardo.
Desde já agradeço.
Att.,