[firebase-br] Como fazer esse Select com Case ???
Luciano franca
luapfirebird em yahoo.com.br
Dom Fev 19 15:17:13 -03 2017
Pessoal eu tenho duas tabelas e não estou conseguindo fazer um case pois retorna o seguinte Erro
"Datatypes are not comparable in expression CASE"O erro eu sei o motivo então gostaria de saber dos colega alguma solução para resolver esse problema.
O que preciso é retornar o resultado de acordo com o Campo dessa forma se o Tipo_Campo for = 'Integer'preciso retornar um resultado do tipo Integer para para isso preciso efetuar comparações que ao tentaruma comparação com o Tipo_Campo = 'Date' vai me dar o erro e não sei como efetuar isso.
Select TR.Codigo,
Case When (TR.Campo = 'Tipo_Integer' And TC.Tipo_Campo = 'Integer') Then TR.Campo_Integer When (TR.Campo = 'Tipo_Integer' And TC.Tipo_Campo = 'Date') Then TR.Campo_Date End As Campo_Integer
>From TABELA_DINAMICA_REGISTROS TRInner Join TABELA_DINAMICA_CABECARIO TC on (TC.Tabela = TR.Tabela And TC.Campo = TR.Campo)
CREATE TABLE TABELA_DINAMICA_CABECARIO ( TABELA "AlfaNumerico_70" NOT NULL, CAMPO "AlfaNumerico_70" NOT NULL, PSEUDO_CAMPO "AlfaNumerico_100", TIPO_CAMPO "AlfaNumerico_40", TAMANHO "Codigo", OBRIGATORIO "AlfaNumerico_1", FILIAL "Filial" NOT NULL);
INSERT INTO TABELA_DINAMICA_CABECARIO (TABELA, CAMPO, PSEUDO_CAMPO, TIPO_CAMPO, TAMANHO, OBRIGATORIO, FILIAL) VALUES ('CADASTRO_OPERAD_CARTAO', 'Tipo_Float', '', 'Float', NULL, NULL, 1);INSERT INTO TABELA_DINAMICA_CABECARIO (TABELA, CAMPO, PSEUDO_CAMPO, TIPO_CAMPO, TAMANHO, OBRIGATORIO, FILIAL) VALUES ('CADASTRO_OPERAD_CARTAO', 'Tipo_Integer', '', 'Integer', NULL, 'S', 1);INSERT INTO TABELA_DINAMICA_CABECARIO (TABELA, CAMPO, PSEUDO_CAMPO, TIPO_CAMPO, TAMANHO, OBRIGATORIO, FILIAL) VALUES ('CADASTRO_OPERAD_CARTAO', 'Tipo_String', 'Teste de Nome', 'String', 7, 'S', 1);INSERT INTO TABELA_DINAMICA_CABECARIO (TABELA, CAMPO, PSEUDO_CAMPO, TIPO_CAMPO, TAMANHO, OBRIGATORIO, FILIAL) VALUES ('CADASTRO_OPERAD_CARTAO', 'Tipo_Memo', '', 'Memo', 20, NULL, 1);
CREATE TABLE TABELA_DINAMICA_REGISTROS ( TABELA "AlfaNumerico_70" NOT NULL, CAMPO "AlfaNumerico_70" NOT NULL, REGISTRO "AlfaNumerico_9999", CAMPO_STRING "AlfaNumerico_1500", CAMPO_MEMO "AlfaNumerico_9999", CAMPO_INTEGER "Codigo", CAMPO_FLOAT "Valores", CAMPO_DATE "Data", CAMPO_TIME TIME, CAMPO_DATETIME TIMESTAMP, CODIGO "Codigo_AlfaNum" NOT NULL, FILIAL "Filial" NOT NULL);
INSERT INTO TABELA_DINAMICA_REGISTROS (TABELA, CAMPO, REGISTRO, CAMPO_STRING, CAMPO_MEMO, CAMPO_INTEGER, CAMPO_FLOAT, CAMPO_DATE, CAMPO_TIME, CAMPO_DATETIME, CODIGO, FILIAL) VALUES ('CADASTRO_OPERAD_CARTAO', 'Tipo_Integer', NULL, NULL, NULL, 155, 0, NULL, NULL, NULL, '6', 0);INSERT INTO TABELA_DINAMICA_REGISTROS (TABELA, CAMPO, REGISTRO, CAMPO_STRING, CAMPO_MEMO, CAMPO_INTEGER, CAMPO_FLOAT, CAMPO_DATE, CAMPO_TIME, CAMPO_DATETIME, CODIGO, FILIAL) VALUES ('CADASTRO_OPERAD_CARTAO', 'Tipo_Float', NULL, NULL, NULL, NULL, 15.53, NULL, NULL, NULL, '7', 0);INSERT INTO TABELA_DINAMICA_REGISTROS (TABELA, CAMPO, REGISTRO, CAMPO_STRING, CAMPO_MEMO, CAMPO_INTEGER, CAMPO_FLOAT, CAMPO_DATE, CAMPO_TIME, CAMPO_DATETIME, CODIGO, FILIAL) VALUES ('CADASTRO_OPERAD_CARTAO', 'Tipo_String', NULL, 'Banana', NULL, NULL, NULL, NULL, NULL, NULL, '4', 0);INSERT INTO TABELA_DINAMICA_REGISTROS (TABELA, CAMPO, REGISTRO, CAMPO_STRING, CAMPO_MEMO, CAMPO_INTEGER, CAMPO_FLOAT, CAMPO_DATE, CAMPO_TIME, CAMPO_DATETIME, CODIGO, FILIAL) VALUES ('CADASTRO_OPERAD_CARTAO', 'Tipo_String', NULL, 'Maça', NULL, NULL, NULL, NULL, NULL, NULL, '3', 0);INSERT INTO TABELA_DINAMICA_REGISTROS (TABELA, CAMPO, REGISTRO, CAMPO_STRING, CAMPO_MEMO, CAMPO_INTEGER, CAMPO_FLOAT, CAMPO_DATE, CAMPO_TIME, CAMPO_DATETIME, CODIGO, FILIAL) VALUES ('CADASTRO_OPERAD_CARTAO', 'Tipo_Memo', NULL, NULL, 'Campo Memo com varias informações', NULL, NULL, NULL, NULL, NULL, '5', 0);
Mais detalhes sobre a lista de discussão lista