none
Case Exists RRS feed

  • Pergunta

  • Boa tarde

    A todos!

    Gostaria de uma ajuda para resolver este problema

    Tenho a seguinte situação abaixo e preciso colocar uma condição onde caso exista conteúdo na tabela  NF_CTRC e o campo NFCTRCData for igual a Nulo onde o campo ParcDocFinProjecao da tabela Parc_Doc_Fin for  = 'Sim' a query me mostre o conteúdo das zerado ou não liste está linha e caso for diferente disso mostre o conteúdo da outra linha 

    Select 	
    	PDF.EntCod As 'Cod_Entidade',
    	PDF.ParcDOcFinEntNome As 'Nome_Entidade',
    	V.VendNome As 'Vendedor',
    	DF.DocFinOrigEmpCod As 'Empresa',
    	PDF.ParcDocFinDupNum,
    	PDF.ParcDocFinDataEmissao As 'DataEmissao',
    	NF.NFDataSaidaEntrada As 'DataEntradaSaida',
    	NC.NFCTRCData As 'Data_Entrega', 
    	PDF.ParcDocFinDataVenc As 'DataVencimento',
    	PDF.ParcDocFinDataProrrog As 'DataProrrogacao',
    	CP.CondPagNome As 'Cond_Pag',
    	S.SitNome As 'SitNome',
    	ICB.CobBancRemNum,
    	PDF.BcoNum As 'Banco',
    	PDF.ParcDocFinValOrig As 'ValorOriginal',
    	E.EntStrDesc As 'Desc_Entidade',
        PDF.ParcDocFinProjecao As 'Projecao',
        PDF.ParcDocFinValor As 'Valor_Bruto'
    
    
            
    
    From 	     DOC_FIN DF 
    	INNER JOIN 
         	     PARC_DOC_FIN PDF ON  DF.EmpCod = PDF.EmpCod 
    			 AND DF.docfinchv = PDF.docfinchv
    			 AND DF.EntCod = PDF.EntCod
    	LEFT OUTER JOIN
    	           NOTA_FISCAL NF ON  DF.DocFinOrigEmpCod = NF.EmpCod 
    		       AND DF.DocFinEspec = NF.CtrlDFModForm 
    		       AND DF.DocFinSerie = NF.CtrlDFSerie 
    		       AND DF.DocFinNumAlt1 = NF.NFNum
    		       AND DF.EntCod = NF.EntCod
    		       
    	LEFT JOIN 	   NF_CTRC NC ON     NC.NFNum = NF.NFNum
    	          AND  NC.CtrlDFModForm = NF.CtrlDFModForm
    	          AND  NC.CtrlDFSerie = NF.CtrlDFSerie
    	          AND  NC.EmpCod = NF.EmpCod
    	          
         	LEFT OUTER JOIN
    	PARC_PAG_NF PPN ON  NF.EmpCod = PPN.EmpCod 
    			AND NF.CtrlDFModForm = PPN.CtrlDFModForm 
    			AND NF.CtrlDFSerie = PPN.CtrlDFSerie 
    			AND NF.NFNum = PPN.NFNum
    			AND PDF.ParcDocFinDupNum = PPN.ParcPagNFNumDup
    	
            LEFT OUTER JOIN
         	ITEM_COB_BANC ICB ON  PDF.EmpCod = ICB.EmpCod 
    			  AND PDF.DocFinChv = ICB.DocFinChv 
    			  AND PDF.ParcDocFinSeq = ICB.ParcDocFinSeq 
    			  AND PDF.ParcDocFinDesmPag = ICB.ParcDocFinDesmPag
    	LEFT OUTER JOIN
         	ENTIDADE E ON E.EntCod = NF.EntCod
    	INNER JOIN
         	SITUACAO S ON PDF.SitCodEstr = S.SitCodEstr
    	LEFT OUTER JOIN
    	VEND_ENT VE ON E.EntCod = VE.EntCod and VE.VendEntPrinc = 'Sim'
                    LEFT OUTER JOIN
    	VENDEDOR V ON  V.VendCod = VE.VendCod
                    LEFT OUTER JOIN
    	COND_PAG CP ON  PDF.parcdocfindupnumalt2 =  CP.condpagcod
    
    
    where   DF.DOCFINTIPOLANC = 'REC' 
    AND   PDF.ParcDocFinDataEmissao >= '20000101'
    AND   PDF.ParcDocFinDataEmissao <= '20180525'
    AND   PDF.PARCDOCFINDATAPRORROG >= '20000101'
    AND   PDF.PARCDOCFINDATAPRORROG <= '20301231'
    AND     DF.DOCFINESPEC <> 'PV'
    AND     PDF.EMPCOD = '1'
    AND    PDF.SitCodEstr not in ('001.018','001.019')
    AND    PDF.PARCDOCFINDATAPAG IS NULL
    
    And NF.NFCancelada = 'Não'
    And PDF.ParcDocFinDupNum = '0000131214-1'
    
    Group By
    
    PDF.EntCod,
    	PDF.ParcDOcFinEntNome,
    	V.VendNome,
    	DF.DocFinOrigEmpCod,
    	PDF.ParcDocFinDupNum,
    	PDF.ParcDocFinDataEmissao,
    	NF.NFDataSaidaEntrada,
    	NC.NFCTRCData,
    	PDF.ParcDocFinDataVenc,
    	PDF.ParcDocFinDataProrrog,
    	CP.CondPagNome,
    	S.SitNome,
    	ICB.CobBancRemNum,
    	PDF.BcoNum,
    	PDF.ParcDocFinValOrig,
    	E.EntStrDesc,
                    PDF.ParcDocFinProjecao,
                   PDF.ParcDocFinValor 
     
    Order by 
    		PDF.ParcDocFinDupNum


    sexta-feira, 25 de maio de 2018 16:55

Respostas

  • Leandro,

    Certo, neste caso, você poderia justamente pensar na possibilidade de aplicar dois selects, um trazendo os dados com base na Data de Entrega preenchida e projeção igual a SIM, e outro com a Data de Entrega e projeção igual a Não.

    O que você acha?

    Depois fazer uma respectiva union entre estes dois Selects, ou até mesmo em um mesmo select declarar a mesma tabela duas vezes mas apresentar colunas específicas que mostram os dados de cada tabela.

    O que você pensa desta possibilidade?


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    quarta-feira, 30 de maio de 2018 12:25

Todas as Respostas

  • Deleted
    sexta-feira, 25 de maio de 2018 17:38
  • Boa tarde

    José

    Tenho essa query que lista o que tenho a receber, a condição que preciso é quando o campo Data_Entrega não for populado o sistema continue me mostrando o resultado mesmo se o campo projeção for sim ou não mas quando o campo Data_Entrega estive preenchido me mostre somente o resultado da linha onde o campo projeção for igual a Não. 

    sexta-feira, 25 de maio de 2018 17:59
  • Leandro,

    Mas então a Data de Entrega pode ser Nula?


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    terça-feira, 29 de maio de 2018 12:25
  • Boa tarde

    Sim, a data pode ser nula.

    terça-feira, 29 de maio de 2018 16:59
  • Leandro,

    Certo, neste caso, você poderia justamente pensar na possibilidade de aplicar dois selects, um trazendo os dados com base na Data de Entrega preenchida e projeção igual a SIM, e outro com a Data de Entrega e projeção igual a Não.

    O que você acha?

    Depois fazer uma respectiva union entre estes dois Selects, ou até mesmo em um mesmo select declarar a mesma tabela duas vezes mas apresentar colunas específicas que mostram os dados de cada tabela.

    O que você pensa desta possibilidade?


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    quarta-feira, 30 de maio de 2018 12:25
  • Boa tarde

    Junior!

    Obrigado, utilizei a Union e consegui o resultado esperado.

    abs,

    quarta-feira, 30 de maio de 2018 19:25