[RESOLVIDO]Consulta MYSQL funciona no SQL Builder mas não na GRID

Minha consulta roda no SQL Builder do ScriptCase, reconhece os campos na hora da criação da aplicação mas da “Erro ao acessar o banco de dados” quando rodo a aplicação, mesmo sem fazer nenhuma alteração na aplicação consulta.

Esse é o meu select:

SELECT
CASE
when (YEAR(CURDATE())-YEAR(A.DT_NASCIMENTO)) between 0 and 18 then ‘00 - 18’
when (YEAR(CURDATE())-YEAR(A.DT_NASCIMENTO)) between 19 and 23 then ‘19 - 23’
when (YEAR(CURDATE())-YEAR(A.DT_NASCIMENTO)) between 24 and 28 then ‘24 - 28’
when (YEAR(CURDATE())-YEAR(A.DT_NASCIMENTO)) between 29 and 33 then ‘29 - 33’
when (YEAR(CURDATE())-YEAR(A.DT_NASCIMENTO)) between 34 and 38 then ‘34 - 38’
when (YEAR(CURDATE())-YEAR(A.DT_NASCIMENTO)) between 39 and 43 then ‘39 - 43’
when (YEAR(CURDATE())-YEAR(A.DT_NASCIMENTO)) between 44 and 48 then ‘44 - 48’
when (YEAR(CURDATE())-YEAR(A.DT_NASCIMENTO)) between 49 and 53 then ‘49 - 53’
when (YEAR(CURDATE())-YEAR(A.DT_NASCIMENTO)) between 54 and 58 then ‘54 - 58’
else ‘>= 59’ end AS FAIXA_ETARIA,
CASE
WHEN A.CD_ULTIMO_CANCELAMENTO = 1 THEN ‘ROMPIMENTO CONTRATO - BENEFICIARIO’
WHEN A.CD_ULTIMO_CANCELAMENTO = 2 THEN ‘TERMINO VINCULO - BENEFICIÁRIO’
WHEN A.CD_ULTIMO_CANCELAMENTO = 3 THEN ‘DESLIGAMENTO DA EMPRESA - COLABORADOR’
WHEN A.CD_ULTIMO_CANCELAMENTO = 4 THEN ‘INADIMPLENCIA’
WHEN A.CD_ULTIMO_CANCELAMENTO = 5 THEN ‘OBITO’
WHEN A.CD_ULTIMO_CANCELAMENTO = 7 THEN ‘EXCLUSAO - MUDANCA DE CODIGO’
WHEN A.CD_ULTIMO_CANCELAMENTO = 8 THEN ‘TRANFERENCIA DE CARTEIRA’
WHEN A.CD_ULTIMO_CANCELAMENTO = 9 THEN ‘ALTERACAO COD. BENEFICIARIO’
WHEN A.CD_ULTIMO_CANCELAMENTO = 13 THEN ‘INCLUSAO INDEVIDA’
WHEN A.CD_ULTIMO_CANCELAMENTO = 88 THEN ‘ERRO CADASTRO’
WHEN A.CD_ULTIMO_CANCELAMENTO = 99 THEN ‘OUTROS’
ELSE
‘NAO INFORMADO’ END TIPO_CANCELAMENTO,
COUNT(A.CD_BENEFICIARIO) AS QUANTIDADE
FROM tabela_do_banco AS A
WHERE ( A.DS_SITUACAO_BENEFICIARIO = ‘CANCELADO’ )
AND date_format(A.DT_ULTIMO_CANCELAMENTO,’%Y-%m’) = ‘2020-01’
AND A.FL_STATUS_USUARIO IN (4,5)
GROUP BY
case
when (YEAR(CURDATE())-YEAR(A.DT_NASCIMENTO)) between 0 and 18 then ‘00 - 18’
when (YEAR(CURDATE())-YEAR(A.DT_NASCIMENTO)) between 19 and 23 then ‘19 - 23’
when (YEAR(CURDATE())-YEAR(A.DT_NASCIMENTO)) between 24 and 28 then ‘24 - 28’
when (YEAR(CURDATE())-YEAR(A.DT_NASCIMENTO)) between 29 and 33 then ‘29 - 33’
when (YEAR(CURDATE())-YEAR(A.DT_NASCIMENTO)) between 34 and 38 then ‘34 - 38’
when (YEAR(CURDATE())-YEAR(A.DT_NASCIMENTO)) between 39 and 43 then ‘39 - 43’
when (YEAR(CURDATE())-YEAR(A.DT_NASCIMENTO)) between 44 and 48 then ‘44 - 48’
when (YEAR(CURDATE())-YEAR(A.DT_NASCIMENTO)) between 49 and 53 then ‘49 - 53’
when (YEAR(CURDATE())-YEAR(A.DT_NASCIMENTO)) between 54 and 58 then ‘54 - 58’
else ‘>= 59’ end ,
CASE
WHEN A.CD_ULTIMO_CANCELAMENTO = 1 THEN ‘ROMPIMENTO CONTRATO - BENEFICIARIO’
WHEN A.CD_ULTIMO_CANCELAMENTO = 2 THEN ‘TERMINO VINCULO - BENEFICIÁRIO’
WHEN A.CD_ULTIMO_CANCELAMENTO = 3 THEN ‘DESLIGAMENTO DA EMPRESA - COLABORADOR’
WHEN A.CD_ULTIMO_CANCELAMENTO = 4 THEN ‘INADIMPLENCIA’
WHEN A.CD_ULTIMO_CANCELAMENTO = 5 THEN ‘OBITO’
WHEN A.CD_ULTIMO_CANCELAMENTO = 7 THEN ‘EXCLUSAO - MUDANCA DE CODIGO’
WHEN A.CD_ULTIMO_CANCELAMENTO = 8 THEN ‘TRANFERENCIA DE CARTEIRA’
WHEN A.CD_ULTIMO_CANCELAMENTO = 9 THEN ‘ALTERACAO COD. BENEFICIARIO’
WHEN A.CD_ULTIMO_CANCELAMENTO = 13 THEN ‘INCLUSAO INDEVIDA’
WHEN A.CD_ULTIMO_CANCELAMENTO = 88 THEN ‘ERRO CADASTRO’
WHEN A.CD_ULTIMO_CANCELAMENTO = 99 THEN ‘OUTROS’
ELSE
‘NAO INFORMADO’ END

Se eu usar as aliases no GROUP BY ele diz que não encontrou as colunas, mas no sql builder funciona normalmente.

Query muito complexa para SQL da grid.
Crie uma view e utilize a view na grid

Não entendi. “Quero muito começa para SQL da grid.”
A view não da porque tem interação do usuário ao escolher a [DATA_FILTRO]

Vc vai usar o filtro da grid?
Então dá sim para usar view, basta disponibilizar o campo no select da view.

É muito simples.
Use a dica que o Haroldo deu e apenas crie a view sem filtro.

Na grid use assim:

SELECT sua_view WHERE data_inicial and data_final.

Muito obrigado, resolvi com a view, não tinha visto por essa optica.

1 Curtida

Obrigado mais uma vez.