none
Colocar um case RRS feed

  • Pergunta

  • SET ARITHABORT OFF
    SET ANSI_WARNINGS OFF
    WITH CTE AS (
    SELECT SE1010.D_E_L_E_T_ + E1_FILIAL + E1_NUM + E1_SERIE AS CHAVE, COUNT(E1_PARCELA) AS RESULT
    FROM SE1010
    WHERE D_E_L_E_T_ <> '*' 
    GROUP BY 
    SE1010.D_E_L_E_T_
    ,SE1010.E1_FILIAL
    ,SE1010.E1_NUM
    ,SE1010.E1_SERIE
    )
     SELECT
    CONVERT(VARCHAR,CAST(E1.E1_EMISSAO AS DATETIME),103) AS                  [Emissão.NF]
      ,E1.E1_NUM                                                                [Nota Fiscal]
      ,Convert(Numeric(10,2),E1.E1_VLCRUZ)                                      [Total Titulo]
      ,RTRIM(D2.D2_COD)                                                         [Cod.Produto]
      ,RTRIM(B1_DESC)                                                           [Desc.Produto] 
      ,E1.E1_VEND1                                                              [Cod.Vendedor]
      ,RTRIM(A3.A3_NOME)                                                        [Nome Vendedor] 
      ,E1.E1_CLIENTE                                                            [Cod.Cliente]
      ,E1.E1_LOJA                                                               [Loja]
      ,RTRIM(E1.E1_NOMCLI)                                                      [Cliente]                      
      ,E1.E1_PARCELA                                                            [Parcela]
      ,RESULT     [Result]
      ,CONVERT(VARCHAR,CAST(E1.E1_VENCORI AS DATETIME),103) AS                  [Vencimento.NF]
      ,CONVERT(VARCHAR,CAST(E1_BAIXA AS DATETIME),103) AS                       [Baixa Titulo]
               ,[Descrição Status]=
                   CASE 
                      WHEN E1.E1_STATUS='A'  THEN 'Titulo Aberto'
                      WHEN E1.E1_STATUS='B'  THEN 'Titulo Baixado'
                    END
      ,Convert(Numeric(10,4),(D2.D2_QUANT/B1_CONV2) )                           [Qtde NF]           
    ,Convert(Numeric(10,4),D2.D2_PRUNIT)                                      [Pr.Unit Nota]
    ,Convert(Numeric(10,4),D2.D2_PRUNIT*B1_CONV2)                             [Pr.Conver.]           
    ,Convert(Numeric(10,4),D2.D2_VALFRE)                                      [Val.Frete]
    ,Convert(Numeric(10,4),(D2.D2_QUANT/B1_CONV2)/RESULT )                    [Qtde Cor.]   
    ,Convert(Numeric(10,4),(D2.D2_VALFRE)/RESULT)                    [Frt Corrig.]   
    ,Convert(Numeric(10,4),(D2.D2_VALIPI/B1_CONV2)/RESULT )                   [IPI Cor.]  
    ,Convert(Numeric(10,4),(D2.D2_PRUNIT*B1_CONV2+((D2.D2_VALFRE/((D2.D2_QUANT/B1_CONV2)/RESULT ))))) [Preço Cor.] 
    ,Convert(Numeric(10,2),(D2.D2_VALBRUT)/RESULT)                        [Total Nota.] 
     

                       FROM 
                           SE1010 E1 
      INNER JOIN SD2010  D2
     ON D2.D_E_L_E_T_+ D2.D2_FILIAL + D2.D2_DOC + D2.D2_SERIE = E1.D_E_L_E_T_ + E1.E1_FILIAL + E1.E1_NUM + E1.E1_SERIE
      INNER JOIN SB1010 B1
     ON D2.D_E_L_E_T_+ D2.D2_COD = B1.D_E_L_E_T_+B1.B1_COD
      INNER JOIN SA3010 A3
                 ON A3.D_E_L_E_T_+ A3.A3_COD = E1.D_E_L_E_T_+E1.E1_VEND1 
      INNER JOIN SC9010 C9
                 ON D2.D_E_L_E_T_+ D2.D2_FILIAL + D2.D2_DOC + D2.D2_SERIE + D2.D2_COD + D2.D2_PEDIDO + D2.D2_ITEMPV
                                          = C9.D_E_L_E_T_+C9.C9_FILIAL + C9.C9_NFISCAL + C9.C9_SERIENF + C9.C9_PRODUTO + C9.C9_PEDIDO + C9.C9_ITEM
      INNER JOIN CTE
                 ON CTE.CHAVE = E1.D_E_L_E_T_+E1.E1_FILIAL+E1.E1_NUM+E1.E1_SERIE
                                      WHERE E1.E1_VEND1='000294'
                                      AND E1_EMISSAO>='20150101'
                         
              ORDER BY E1_EMISSAO
              

     quero colocar de pequeno período um peso especifico

    Campo 
    E1_EMISSAO -- DATA

    ,CASE WHEN E1.E1_EMISSAO BETWEEN '20161101' AND '20163006' 

    terça-feira, 29 de novembro de 2016 15:50

Todas as Respostas

  • Marco,

    O que você deseja fazer? Somente postando o código não temos como te ajudar!!!!


    Pedro Antonio Galvao Junior [MVP | MCC | 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 novembro de 2016 16:33
  • Boa Tarde
    Pedro

    Tenho um campo de produto e cada produto tem um peso, mais no meio do ano pessoal fez uma alteração no peso.

    Mais como posso demonstrar o resultado com duas datas diferente com pesos diferente.
    por exemplo

    Produto        PesoAntigo1    PesoNovo2       Data1            Data2

    504084              1,25                1,27          20160630       20160701

    Regra
    Produto 504084 quando a data1 menor ou igual pegar o pesoantigo1, quando a data for maior ou igual 20160701 pegar a data2

    quarta-feira, 30 de novembro de 2016 16:26
  • Nesse seu exemplo acima

    fiz dessa forma , basta usar a função IIF, onde se a data1 for menor ou igual a data2 mostrara o valor do peso antigo, caso contrario mostrará o peso atual


    DECLARE @table TABLE
    (
    Produto INT ,
    PesoAntigo1 DECIMAL(8,2),
    PesoNovo2 DECIMAL(8,2),
    Data1 DATE,
    Data2 DATE
    )
    
    INSERT INTO @table
            ( Produto ,
              PesoAntigo1 ,
              PesoNovo2 ,
              Data1 ,
              Data2
            )
    
    VALUES  ( 504084 ,1.25 ,1.27 ,'20160630' , '20160701'  )
    
    SELECT T.Produto ,
           T.PesoAntigo1 ,
           T.PesoNovo2 ,
           T.Data1 ,
           T.Data2,
      [Valor a Ser Mostrado] =IIF( T.Data1 <= T.Data2,T.PesoAntigo1,T.PesoNovo2 )


       FROM @table AS T


    Wesley Neves


    quarta-feira, 30 de novembro de 2016 17:05
  • Boa tarde Marco,
    Você está pegando o peso da tabela de faturamento ou do cadastro de produtos?

    Esse peso está armazenado onde? na D2 ou B1? e o peso antigo?

    Abraço!


    "A vida é um paraíso, mas os homens não o sabem e não se preocupam em sabê-lo." Fiodor Dostoievski

    quarta-feira, 30 de novembro de 2016 21:44
  • Se for da B1 ele não vai chegar nunca no valor, la só guarda o peso atual.

    a menos que tenha um campo customizado

    segunda-feira, 5 de dezembro de 2016 16:54