× Linguagem de Programação ADVPL

Perguntas QUERY EM RELATORIO TREPORT

Mais
9 anos 11 meses atrás #26471 por manoelcarlosjunior
Preciso de uma ajuda pessoal,

Não manjo muito ainda de SQL, Montei um relatório com a query abaixo, preciso quando o campo F2_TIPOCLI = F seja executado o
inner join Dados 1 e quando o campo F2_TIPOCLI = R Executar a query Dados 2. Pesquisando achei a condição CASE mais não consegui aplicar
da forma correta.

Se puderem me ajudar,


Grato,


Manoel Carlos Júnior







SELECT F2_EMISSAO, F2_DOC, F2_SERIE, F2_VALBRUT, F2_CLIENTE, F2_LOJA, F2_TIPOCLI, F2_FRETE, F2_VOLUME1,
F2_PBRUTO,--F1_EMISSAO, F1_DOC,F1_SERIE,F1_VALBRUT,F1_FORNECE,F1_LOJA,F1_FRETE,F1_VOLUME,F1_TIPO,F1_PBRUTO,
A4_NOME, F4_CF, F4_FINALID, C5_XDEPTO, C5_NUM, C5_XCOT, A1_NOME, A1_CGC, A1_EST, A1_BAIRRO, A1_MUN /*,
A2_NOME, A2_CGC, A2_EST, A2_BAIRRO, A2_MUN*/


FROM SF2010 SF2


INNER JOIN SC5010 SC5 ON C5_FILIAL = F2_FILIAL
AND C5_CLIENTE = F2_CLIENTE
AND C5_LOJACLI = F2_LOJA
AND C5_VEND1 = F2_VEND1
AND C5_NOTA = F2_DOC
AND C5_SERIE = F2_SERIE
AND C5_CONDPAG = F2_COND
AND C5_TIPOCLI = F2_TIPOCLI
AND C5_EMISSAO = F2_EMISSAO
AND C5_NOTA = F2_DOC
AND C5_LOJAENT = F2_LOJENT



INNER JOIN SA4010 SA4 ON A4_FILIAL = '01'
AND A4_COD = C5_TRANSP



INNER JOIN SD2010 SD2 ON D2_FILIAL = F2_FILIAL
AND D2_DOC = F2_DOC
AND D2_CLIENTE = F2_CLIENTE
AND D2_EMISSAO = F2_EMISSAO
AND D2_LOJA = F2_LOJA
AND D2_CLIENTE = F2_CLIENTE
AND D2_SERIE = F2_SERIE
AND D2_EST = F2_EST



INNER JOIN SF4010 SF4 ON F4_CODIGO = D2_TES
AND F4_CF = D2_CF


INNER JOIN SA1010 SA1 ON A1_FILIAL = '01' -- Dados 1
AND A1_COD = F2_CLIENTE
AND A1_LOJA = F2_LOJA
AND A1_EST = F2_EST
AND A1_VEND = F2_VEND1

/*INNER JOIN SA2010 SA2 ON A2_FILIAL = '01' -- Dados 2
AND A2_COD = F2_CLIENTE
AND A2_LOJA = F2_LOJA
AND A2_EST = F2_EST */


WHERE F2_CHVNFE <> ''
AND D2_ITEM = '01'
AND SF2.D_E_L_E_T_ <> '*'
AND SA4.D_E_L_E_T_ <> '*'
AND SC5.D_E_L_E_T_ <> '*'
AND SF4.D_E_L_E_T_ <> '*'
--AND SA2.D_E_L_E_T_ <> '*'
AND SA1.D_E_L_E_T_ <> '*'
AND SD2.D_E_L_E_T_ <> '*'



ORDER BY F2_EMISSAO, F2_SERIE, A4_NOME

Por favor Acessar ou Registrar para participar da conversa.

Mais
9 anos 11 meses atrás #26501 por manoelcarlosjunior
Consegui galera só deu certo com union abaixo a query para estudos..

Abraço a todos,

Manoel Carlos Júnior



SELECT TIPONF, EMISSAO, F1_DOC, F1_SERIE, A4_NOME, F1_VALBRUT, D1_CF, F4_FINALID, F1_FORNECE, F1_LOJA,
F1_TIPO, A1_NOME, A1_CGC, A1_EST, A1_BAIRRO, A1_MUN,
F1_FRETE, F1_VOLUME1, F1_PBRUTO, C5_XDEPTO,C5_NUM,C5_XCOT


FROM


(SELECT 'E' AS TIPONF, F1_EMISSAO AS EMISSAO, F1_DOC, F1_SERIE, A4_NOME, F1_VALBRUT, D1_CF, F4_FINALID, F1_FORNECE, F1_LOJA,
F1_TIPO, A1_NOME, A1_CGC, A1_EST, A1_BAIRRO, A1_MUN,
F1_FRETE, F1_VOLUME1, F1_PBRUTO,'' AS C5_XDEPTO,'' AS C5_NUM,'' AS C5_XCOT

FROM SF1010 SF1

LEFT JOIN SD1010 SD1 ON SD1.D1_FILIAL = SF1.F1_FILIAL
AND SD1.D1_DOC = SF1.F1_DOC
AND SD1.D1_FORNECE = SF1.F1_FORNECE
AND SD1.D1_LOJA = SF1.F1_LOJA
AND SD1.D1_SERIE = SF1.F1_SERIE
AND SD1.D1_EMISSAO = SF1.F1_EMISSAO
AND SD1.D_E_L_E_T_ <> '*'
AND SD1.D1_ITEM = '0001'

LEFT JOIN SA1010 SA1 ON SA1.A1_FILIAL = '01'
AND SA1.A1_COD = F1_FORNECE
AND SA1.A1_LOJA = F1_LOJA
AND SA1.A1_EST = F1_EST
AND SA1.D_E_L_E_T_ <> '*'

LEFT JOIN SF4010 SF4 ON SF4.F4_CODIGO = SD1.D1_TES
AND SF4.D_E_L_E_T_ <> '*'

LEFT JOIN SA4010 SA4 ON SA4.A4_FILIAL = '01'
AND SA4.A4_COD = F1_TRANSP

WHERE SF1.D_E_L_E_T_ <> '*'
AND SF1.F1_CHVNFE <> ''
AND SF1.F1_FORMUL = 'S'
AND SF1.F1_TIPO IN ('B','D')

UNION

SELECT 'E' AS TIPONF, F1_EMISSAO AS EMISSAO, F1_DOC, F1_SERIE, A4_NOME, F1_VALBRUT, D1_CF, F4_FINALID, F1_FORNECE, F1_LOJA,
F1_TIPO, A2_NOME, A2_CGC, A2_EST, A2_BAIRRO, A2_MUN,
F1_FRETE, F1_VOLUME1, F1_PBRUTO,'' AS C5_XDEPTO,'' AS C5_NUM,'' AS C5_XCOT

FROM SF1010 SF1

LEFT JOIN SD1010 SD1 ON SD1.D1_FILIAL = SF1.F1_FILIAL
AND SD1.D1_DOC = SF1.F1_DOC
AND SD1.D1_FORNECE = SF1.F1_FORNECE
AND SD1.D1_LOJA = SF1.F1_LOJA
AND SD1.D1_SERIE = SF1.F1_SERIE
AND SD1.D1_EMISSAO = SF1.F1_EMISSAO
AND SD1.D_E_L_E_T_ <> '*'
AND SD1.D1_ITEM = '0001'


LEFT JOIN SA2010 SA2 ON A2_FILIAL = '01'
AND A2_COD = F1_FORNECE
AND A2_LOJA = F1_LOJA
AND A2_EST = F1_EST
AND SA2.D_E_L_E_T_ <> '*'



LEFT JOIN SF4010 SF4 ON SF4.F4_CODIGO = SD1.D1_TES
AND SF4.D_E_L_E_T_ <> '*'

LEFT JOIN SA4010 SA4 ON SA4.A4_FILIAL = '01'
AND SA4.A4_COD = F1_TRANSP

WHERE SF1.D_E_L_E_T_ <> '*'
AND SF1.F1_CHVNFE <> ''
AND SF1.F1_FORMUL = 'S'
AND SF1.F1_TIPO = 'N'

UNION


SELECT 'S' AS TIPONF,F2_EMISSAO AS EMISSAO, F2_DOC, F2_SERIE, A4_NOME, F2_VALBRUT, D2_CF, F4_FINALID, F2_CLIENTE, F2_LOJA,
F2_TIPOCLI,A1_NOME, A1_CGC, A1_EST, A1_BAIRRO, A1_MUN, F2_FRETE, F2_VOLUME1, F2_PBRUTO, C5_XDEPTO, C5_NUM, C5_XCOT


FROM SF2010 SF2
LEFT JOIN SC5010 SC5 ON C5_FILIAL = F2_FILIAL
AND C5_CLIENTE = F2_CLIENTE
AND C5_LOJACLI = F2_LOJA
AND C5_VEND1 = F2_VEND1
AND C5_NOTA = F2_DOC
AND C5_SERIE = F2_SERIE
AND C5_CONDPAG = F2_COND
AND C5_TIPOCLI = F2_TIPOCLI
AND C5_EMISSAO = F2_EMISSAO
AND C5_LOJAENT = F2_LOJENT

LEFT JOIN SA4010 SA4 ON A4_FILIAL = '01'
AND A4_COD = C5_TRANSP

LEFT JOIN SD2010 SD2 ON D2_FILIAL = F2_FILIAL
AND D2_DOC = F2_DOC
AND D2_CLIENTE = F2_CLIENTE
AND D2_EMISSAO = F2_EMISSAO
AND D2_LOJA = F2_LOJA
AND D2_CLIENTE = F2_CLIENTE
AND D2_SERIE = F2_SERIE
AND D2_EST = F2_EST

LEFT JOIN SF4010 SF4 ON F4_CODIGO = D2_TES
AND F4_CF = D2_CF

LEFT JOIN SA1010 SA1 ON A1_FILIAL = '01'
AND A1_COD = F2_CLIENTE
AND A1_LOJA = F2_LOJA
AND A1_EST = F2_EST
AND A1_VEND = F2_VEND1

WHERE F2_CHVNFE <> ''
AND D2_ITEM = '01'
AND SF2.D_E_L_E_T_ <> '*'
AND SA4.D_E_L_E_T_ <> '*'
AND SC5.D_E_L_E_T_ <> '*'
AND SF4.D_E_L_E_T_ <> '*'
AND SA1.D_E_L_E_T_ <> '*'
AND SD2.D_E_L_E_T_ <> '*'

UNION

SELECT 'S' AS TIPONF,F2_EMISSAO AS EMISSAO, F2_DOC, F2_SERIE, A4_NOME, F2_VALBRUT, D2_CF, F4_FINALID, F2_CLIENTE, F2_LOJA,
F2_TIPOCLI, A2_NOME, A2_CGC, A2_EST, A2_BAIRRO, A2_MUN, F2_FRETE, F2_VOLUME1, F2_PBRUTO, C5_XDEPTO, C5_NUM, C5_XCOT

FROM SF2010 SF2
LEFT JOIN SC5010 SC5 ON C5_FILIAL = F2_FILIAL
AND C5_CLIENTE = F2_CLIENTE
AND C5_LOJACLI = F2_LOJA
AND C5_VEND1 = F2_VEND1
AND C5_NOTA = F2_DOC
AND C5_SERIE = F2_SERIE
AND C5_CONDPAG = F2_COND
AND C5_TIPOCLI = F2_TIPOCLI
AND C5_EMISSAO = F2_EMISSAO
AND C5_LOJAENT = F2_LOJENT

LEFT JOIN SA4010 SA4 ON A4_FILIAL = '01'
AND A4_COD = C5_TRANSP

LEFT JOIN SD2010 SD2 ON D2_FILIAL = F2_FILIAL
AND D2_DOC = F2_DOC
AND D2_CLIENTE = F2_CLIENTE
AND D2_EMISSAO = F2_EMISSAO
AND D2_LOJA = F2_LOJA
AND D2_CLIENTE = F2_CLIENTE
AND D2_SERIE = F2_SERIE
AND D2_EST = F2_EST

LEFT JOIN SF4010 SF4 ON F4_CODIGO = D2_TES
AND F4_CF = D2_CF

LEFT JOIN SA2010 SA2 ON A2_FILIAL = '01'
AND A2_COD = F2_CLIENTE
AND A2_LOJA = F2_LOJA
AND A2_EST = F2_EST

WHERE F2_CHVNFE <> ''
AND D2_ITEM = '01'
AND SF2.D_E_L_E_T_ <> '*'
AND SA4.D_E_L_E_T_ <> '*'
AND SC5.D_E_L_E_T_ <> '*'
AND SF4.D_E_L_E_T_ <> '*'
AND SA2.D_E_L_E_T_ <> '*'
AND SD2.D_E_L_E_T_ <> '*'

) AS NOTAS_ENTR_SAIDA

WHERE NOTAS_ENTR_SAIDA.EMISSAO >='20141201'
AND NOTAS_ENTR_SAIDA.EMISSAO <='20141201'

ORDER BY EMISSAO, F1_SERIE, A4_NOME

Por favor Acessar ou Registrar para participar da conversa.

Mais
9 anos 11 meses atrás #26504 por lalberto
Respondido por lalberto no tópico QUERY EM RELATORIO TREPORT
Parabéns Manoel e Obrigado por Compartilhar, mostrou-se ser uma pessoa humilde e que realmente está aqui para somar, diferente de pessoas arrogantes que infelizmente acabamos por conhecer.

Abraços e mesmo que não tenhamos ajudado você, você não se importou com isso e mesmo assim compartilhou a solução conosco.

Abraços. :woohoo: :woohoo: :woohoo:

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.

Mais
9 anos 11 meses atrás #26505 por manoelcarlosjunior
Tamo Junto Master ADVPL !!!

"O conhecimento não é pra ser guardado a sete chaves e sim pra ser compartilhado, dividido, pois conhecimento guardado é igual dinheiro num cofre, perde o valor e não rende nada."

Lindomar Batista

Por favor Acessar ou Registrar para participar da conversa.

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