× Linguagem de Programação ADVPL

Perguntas duvida SQL

Mais
9 anos 11 meses atrás #26637 por nagasako
duvida SQL foi criado por nagasako
pessoal

estou precisando montar um relatorio em advpl mas to batendo cabeça na query. preciso listar os produtos conforme query A, independente de ter ocorrido venda de um determinado produto (query B), preciso que liste todos os produtos resultado da query A, mesmo que o resultado em B seja zerado ou null. Tentei usar o left outer join, mas esta retornando resultado da seguinte forma(query C):

pra cada registro da query A, o valor total geral e o campo F2_VEND1 vem nulo.
nos casos em que o F2_VEND1 vem preenchido, só lista os produtos que houveram vendas. Alguem tem ideia de como devo fazer??


Query A
select B1_COD, B1_DESC, B1_ZZPREV
from SB1010 SB1
where SB1.D_E_L_E_T_ = ''
and SB1.B1_ZZPREV = 'S'

Query B
select D2_COD,SUM(D2_QUANT) AS QTDE, SUM(D2_TOTAL) AS VLRTOTAL, F2_VEND1 AS RTV
from SD2010 SD2, SF2010 SF2
where SD2.D_E_L_E_T_ = ''
and SF2.D_E_L_E_T_ = ''
and SF2.F2_FILIAL = SD2.D2_FILIAL
and SF2.F2_DOC = SD2.D2_DOC
and SF2.F2_SERIE = SD2.D2_SERIE
and YEAR(SD2.D2_EMISSAO) = 2014
and F2_VEND1 = 'RTV002'
group by D2_COD,F2_VEND1
order by D2_COD


Query C
select A.B1_COD,A.B1_DESC,SUM(D2_TOTAL) AS VLRTOT, F2_VEND1
from SB1010 A
left outer join SD2010 B ON A.B1_COD =SUBSTRING(B.D2_COD,1,9) and A.D_E_L_E_T_ = '' and B.D_E_L_E_T_ = '' and B.D2_TIPO = 'N'
left outer join SF2010 C ON C.F2_FILIAL = A.B1_FILIAL AND B.D2_FILIAL = C.F2_FILIAL and B.D2_DOC = C.F2_DOC and B.D2_SERIE = C.F2_SERIE and C.D_E_L_E_T_ = '' and C.F2_VEND1 = 'RTV002' AND YEAR(C.F2_EMISSAO)=2014
where SUBSTRING(A.B1_COD,1,3) = 'OXI' and A.B1_FILIAL = '01' and A.B1_ZZPREV = 'S'
group by A.B1_COD,A.B1_DESC, F2_VEND1
order by F2_VEND1,A.B1_COD

Por favor Acessar ou Registrar para participar da conversa.

Mais
9 anos 11 meses atrás #26638 por lalberto
Respondido por lalberto no tópico duvida SQL
select F2_VEND1,A.B1_COD,A.B1_DESC, SUM(ISNULL(D2_TOTAL,0)) AS VLRTOT
from SB1010 A
left join SD2010 B ON A.B1_COD =B.D2_COD and B.D_E_L_E_T_ = '' and B.D2_TIPO = 'N'
left join SF2010 C ON C.F2_FILIAL = A.B1_FILIAL AND B.D2_FILIAL = C.F2_FILIAL and B.D2_DOC = C.F2_DOC and B.D2_SERIE = C.F2_SERIE and C.D_E_L_E_T_ = '' and C.F2_VEND1 = 'RTV002' AND LEFT(C.F2_EMISSAO,4)='2014'
where SUBSTRING(A.B1_COD,1,3) = 'OXI' and A.B1_FILIAL = '01' and A.B1_ZZPREV = 'S'
group by F2_VEND1, A.B1_COD,A.B1_DESC
order by F2_VEND1,A.B1_COD

Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br

Por favor Acessar ou Registrar para participar da conversa.

Tempo para a criação da página:0.122 segundos
Joomla templates by a4joomla