[firebase-br] Como Retornar Coluna de tipos de dados diferente atravez de um Case ???
Luciano franca
luapfirebird em yahoo.com.br
Dom Fev 19 15:37:52 -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.
SelectTC.campo,
Case TC.Tipo_Campo -- Essa coluna pode ter um tipo qualquer de dado como Integer, Date, Float Etc... When 'Integer' Then TD.Campo_Integer -- Se o campo for do Tipo Integer então pego o Registro que está na Coluna "Campo_Integer" When 'Date' Then TD.Campo_Date -- Se o campo for do Tipo Date então pego o Registro que está na Coluna "Campo_Date" End As Resultado -- Se o registro que está armazenado na Coluna "TC.Tipo_Campo" for igual a "Date" eu preciso que o resultado seja do tipo Date ou seja não posso usar CAST para transformar tudo em VarChar.
>From TABELA_DINAMICA_REGISTROS TDInner Join TABELA_DINAMICA_CABECARIO TC On (TC.tabela = TD.tabela And TC.campo = TD.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