Fórum Ms Sql - Resultados diferentes entre Delphi e Management Studio #574759
09/02/2017
0
O select postado abaixo retorna resultados diferentes se executado no Delphi e no Management Studio.
O resultado do delphi está errado.
DECLARE @ANOMESREF VARCHAR(10)
DECLARE @COD_PLANOFORNECEDOR VARCHAR(10)
DECLARE @NRCOMPARACAO INTEGER
SET @ANOMESREF = '201701'
SET @COD_PLANOFORNECEDOR = '0181471'
SET @NRCOMPARACAO = 20
SELECT @NRCOMPARACAO, @ANOMESREF, PP.ADMISSAO, PP.COD_PLANOCONVENIO,
PP.NR_UNIMED, '' AS CPF, SUBSTRING(PP.ASSOCIADO,1,40),
SUBSTRING(PP.TITULAR,1,40), 'SEGURO NÃO LOCALIZADO NO SISTEMA'
,0,PP.VALOR_PLANO
FROM PREPAGAMENTO PP
WHERE 1 = 1
AND SUBSTRING(RTRIM(LTRIM(PP.NR_UNIMED)),5,12) + RTRIM(LTRIM(PP.COBERTURA))
NOT IN (
SELECT RTRIM(LTRIM(AP.COD_ASSOCPLANOCONVENIO)) + RTRIM(LTRIM(PC.COBERTURA))
FROM ASSOCPLANO AP,
PLANOCONVENIO PC
WHERE 1 = 1
AND AP.SITUACAO = 'A'
AND PC.FK_CONVENIO = 1 -- UNIMED
AND AP.FK_PLANOCONVENIO = PC.PK_PLANOCONVENIO
)
O resultado do delphi está errado.
DECLARE @ANOMESREF VARCHAR(10)
DECLARE @COD_PLANOFORNECEDOR VARCHAR(10)
DECLARE @NRCOMPARACAO INTEGER
SET @ANOMESREF = '201701'
SET @COD_PLANOFORNECEDOR = '0181471'
SET @NRCOMPARACAO = 20
SELECT @NRCOMPARACAO, @ANOMESREF, PP.ADMISSAO, PP.COD_PLANOCONVENIO,
PP.NR_UNIMED, '' AS CPF, SUBSTRING(PP.ASSOCIADO,1,40),
SUBSTRING(PP.TITULAR,1,40), 'SEGURO NÃO LOCALIZADO NO SISTEMA'
,0,PP.VALOR_PLANO
FROM PREPAGAMENTO PP
WHERE 1 = 1
AND SUBSTRING(RTRIM(LTRIM(PP.NR_UNIMED)),5,12) + RTRIM(LTRIM(PP.COBERTURA))
NOT IN (
SELECT RTRIM(LTRIM(AP.COD_ASSOCPLANOCONVENIO)) + RTRIM(LTRIM(PC.COBERTURA))
FROM ASSOCPLANO AP,
PLANOCONVENIO PC
WHERE 1 = 1
AND AP.SITUACAO = 'A'
AND PC.FK_CONVENIO = 1 -- UNIMED
AND AP.FK_PLANOCONVENIO = PC.PK_PLANOCONVENIO
)
Ivan Almeida
Curtir tópico
+ 0
Responder
Post mais votado
09/02/2017
Olá!
Quais são as diferenças no resultado? Quais componentes do Delphi está utilizando?
Jones
Quais são as diferenças no resultado? Quais componentes do Delphi está utilizando?
Jones
Jones Granatyr
Responder
Gostei + 1
Mais Posts
09/02/2017
Ivan Almeida
Caro Jonas,
A diferença está no número de registros encontrados, basicamente o teste "NOT IN (
SELECT RTRIM(LTRIM(AP.COD_ASSOCPLANOCONVENIO)) + RTRIM(LTRIM(PC.COBERTURA)) " é que está furando.
Como estava com muita pressa optei por criar tabelas temporárias com as colunas já concatenadas e desta forma funcionou. Teoricamente não tem o menor sentido, mas vai entender.
Muito obrigado pela ajuda.
A diferença está no número de registros encontrados, basicamente o teste "NOT IN (
SELECT RTRIM(LTRIM(AP.COD_ASSOCPLANOCONVENIO)) + RTRIM(LTRIM(PC.COBERTURA)) " é que está furando.
Como estava com muita pressa optei por criar tabelas temporárias com as colunas já concatenadas e desta forma funcionou. Teoricamente não tem o menor sentido, mas vai entender.
Muito obrigado pela ajuda.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)