on 07-12-2013 4:43 PM
Bom dia.
Preciso gerar um relatório que contenha uma lista com os registros da tabela de entrega de mercadorias (ODLN). Nesse mesmo relatório, eu preciso que apareça a data da devolução da mercadoria localizada na tabela ORDN. Nem sempre a mercadoria já foi devolvida, ou seja, só preciso trazer um registro da ORDN quando ele existir, por isso a utilização do LEFT JOIN.
O relacionamento entre as tabelas, foi feito através de um campo de observações, não consegui achar um campo numérico que relacionasse as duas.
O meu problema é o seguinte, construi o SQL abaixo para trazer os registros, no formato que preciso para o relatório:
A parte destacada é onde eu faço o relacionamento das duas tabelas. Quando uso esse relacionamento em uma consulta isolada, consigo trazer as datas da forma correta. Quando uso como no exemplo acima, todas as datas vêm como 10-07-2013, inclusive os registros que não têm devolução vem com problema.
Alguém sabe onde está o erro?
Obrigado.
Bom dia!
O caminho que a Mayara passou é o correto, só acrescentando eu verificaria item a item da nota pois, não sei se é o seu caso, em uma nota com diversos itens, esses podem voltar em datas diferentes.
select
dln1.ItemCode as Item, dln1.Dscription as Descricao, odln.DocDate as [Data Envio], ODLN.Serial as [NF entrega],
odln.CardName as Destinatario, ordn.DocDate as [Data Dev.], ordn.Serial as [NF Dev.]
from
DLN1
join ODLN on dln1.DocEntry = odln.DocEntry
left outer join RDN1 on DLN1.TrgetEntry = rdn1.DocEntry
left outer join ORDN on rdn1.DocEntry = ordn.DocEntry
order by
odln.Serial desc
Espero ter ajudado
Eric
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
A consulta acima estava trazendo os cancelamentos também, abaixo estou restringindo o a visualização dos registros que são cancelamentos e eliminando alguns itens que estavam duplicados
select distinct
dln1.ItemCode as Item, dln1.Dscription as Descricao, odln.DocDate as [Data Envio], ODLN.Serial as [NF entrega],
odln.CardName as Destinatario, ordn.DocDate as [Data Dev.], ordn.Serial as [NF Dev.]
from
DLN1
join ODLN on dln1.DocEntry = odln.DocEntry
left outer join RDN1 on DLN1.TrgetEntry = rdn1.DocEntry
left outer join ORDN on rdn1.DocEntry = ordn.DocEntry
where
-- na linha abaixo tiro os cancelamentos
(CASE when (dln1.TrgetEntry is not null and ordn.SeqCode = 1) then 'Y' else 'N' end) = 'N'
order by
odln.Serial desc
Att.
Eric
Olá Bunno,
Realmente não há uma ligação direta entre as tabelas ODLN e a ORDN, mas na tabela filha da ORDN (RDN) existe!!
Veja como ficou a consulta utilizando esta tabela:
SELECT
A.DocDate as Data,
A.Serial as Num,
A.CardName as Destinatario,
(select top 1 docdate from rdn1 where BaseRef = A.docNum) as Devolucao,
DATEADD(day,20,A.DocDate) as Vinte,
DATEADD(day,30,A.DocDate) as Trinta,
DATEADD(day,45,A.DocDate) as QuarentaeCinco,
DATEADD(day,60,A.DocDate) as Sessenta
FROM dbo.ODLN A
ORDER BY Data DESC
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
92 | |
11 | |
11 | |
6 | |
6 | |
4 | |
3 | |
3 | |
3 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.