Fórum Por favor : Consulta SQL para titulos (boletos) já vencidos #574382
31/01/2017
0
Segue a descrição das duas tabelas
/***********************************************/
/* TABELA CADASTRO DE TITULOS */
/***********************************************/
create table CADTITULOS (
TI_FORNECEDOR INTEGER NOT NULL,
TI_NUMERO CHAR(15) NOT NULL,
TI_VALOR NUMERIC(10,2) NOT NULL,
TI_EMISSAO DATE NOT NULL,
TI_DATA_DOC DATE NOT NULL,
TI_VENCIMENTO DATE NOT NULL,
TI_OBS VARCHAR(40),
TI_USUARIO INTEGER NOT NULL,
TI_NUMNOTA INTEGER,
constraint PK_CADTITULOS primary key (TI_FORNECEDOR, TI_NUMERO),
constraint FK_CADTITULOS foreign key (TI_FORNECEDOR) REFERENCES FORNECEDORES(F_NUMERO)
);
/***********************************************/
/* TABELA CADASTRO DE BAIXAS */
/***********************************************/
create table CADBAIXAS (
BX_FORNECEDOR INTEGER NOT NULL,
BX_NUMERO CHAR(15) NOT NULL,
BX_DATA DATE NOT NULL,
BX_DEPARTAMENTO INTEGER NOT NULL,
BX_LANCAMENTO INTEGER NOT NULL,
BX_VALOR NUMERIC(10,2) NOT NULL,
BX_JUROS NUMERIC(10,2) NOT NULL,
BX_DESCONTOS NUMERIC(10,2) NOT NULL,
BX_OBS VARCHAR(30),
BX_USUARIO INTEGER NOT NULL,
BX_INTLANC INTEGER NOT NULL,
constraint PK_CADBAIXAS primary key (BX_FORNECEDOR, BX_NUMERO, BX_DATA),
constraint FK_CADBAIXAS foreign key (BX_FORNECEDOR, BX_NUMERO) REFERENCES CADTITULOS(TI_FORNECEDOR, TI_NUMERO) ON DELETE CASCADE
);
CREATE INDEX IX_INTLANC_BAIXAS ON CADBAIXAS (BX_INTLANC);
/************************************************/
/* GENERATOR de BAIXAS DE TITULOS */
/************************************************/
CREATE GENERATOR GEN_BAIXASTIT_NUM;
Observem que os campos (BX_FORNECEDOR, BX_NUMERO) são chave estrangeira de CadTitulos.
Emanuel Gonçalves
Curtir tópico
+ 0Posts
31/01/2017
Daniel Araújo
Acredito que assim resolva:
SELECT *
FROM CADTITULOS
WHERE TI_VENCIMENTO > CAST(GETDATE() AS DATE)
AND CAST(TI_FORNECEDOR AS CHAR(15)) + TI_NUMERO NOT IN (
SELECT CAST(BX_FORNECEDOR AS CHAR(15)) + BX_NUMERO
FROM CADBAIXAS
)Daniel Araújo
http://doispontozero-programador.blogspot.com.br/
Gostei + 0
31/01/2017
Emanuel Gonçalves
Acredito que assim resolva:
SELECT *
FROM CADTITULOS
WHERE TI_VENCIMENTO > CAST(GETDATE() AS DATE)
AND CAST(TI_FORNECEDOR AS CHAR(15)) + TI_NUMERO NOT IN (
SELECT CAST(BX_FORNECEDOR AS CHAR(15)) + BX_NUMERO
FROM CADBAIXAS
)Daniel Araújo
http://doispontozero-programador.blogspot.com.br/
Daniel obrigado.
Eu estou executando o SQL dentro de uma query e o mesmo está retornando o seguinte erro ao executar
[FireDAC][Phys][FB]dynamic SLQ Error
expression evaluation not supported
string cannot be added or subtracted in dialect 3
Gostei + 0
31/01/2017
Daniel Araújo
Fiz o select pensando no SQL Server. O problema está na concatenação de strings. Acho que no firebird usa o || no lugar do +.
Tenta assim:
SELECT * FROM CADTITULOS WHERE TI_VENCIMENTO > CAST(GETDATE() AS DATE) AND CAST(TI_FORNECEDOR AS CHAR(15)) || TI_NUMERO NOT IN ( SELECT CAST(BX_FORNECEDOR AS CHAR(15)) || BX_NUMERO FROM CADBAIXAS )
Gostei + 0
01/02/2017
Emanuel Gonçalves
Fiz o select pensando no SQL Server. O problema está na concatenação de strings. Acho que no firebird usa o || no lugar do +.
Tenta assim:
SELECT * FROM CADTITULOS WHERE TI_VENCIMENTO > CAST(GETDATE() AS DATE) AND CAST(TI_FORNECEDOR AS CHAR(15)) || TI_NUMERO NOT IN ( SELECT CAST(BX_FORNECEDOR AS CHAR(15)) || BX_NUMERO FROM CADBAIXAS )
Daniel só rodou modificando o código GETDATE por CURRENT_DATE, o detalhe é que ele me retornou os títulos com vencimento futuro.
você tem um e-mail para contato?
Gostei + 0
01/02/2017
Daniel Araújo
Errei no sinal. Faz assim:
SELECT * FROM CADTITULOS WHERE TI_VENCIMENTO < CAST(GETDATE() AS DATE) AND CAST(TI_FORNECEDOR AS CHAR(15)) || TI_NUMERO NOT IN ( SELECT CAST(BX_FORNECEDOR AS CHAR(15)) || BX_NUMERO FROM CADBAIXAS )
Daniel Araújo
http://doispontozero-programador.blogspot.com.br/
Gostei + 0
01/02/2017
Emanuel Gonçalves
Errei no sinal. Faz assim:
SELECT * FROM CADTITULOS WHERE TI_VENCIMENTO < CAST(GETDATE() AS DATE) AND CAST(TI_FORNECEDOR AS CHAR(15)) || TI_NUMERO NOT IN ( SELECT CAST(BX_FORNECEDOR AS CHAR(15)) || BX_NUMERO FROM CADBAIXAS )
Daniel Araújo
http://doispontozero-programador.blogspot.com.br/
Obrigado Daniel, deu certo. A consulta ficou bem lenta, sem duvida pq os números de registros nas duas tabelas são bem grandes
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)