none
Quey desconto RRS feed

  • Pergunta

  • Tenho a seguinte registros de uma tabela

    Quando no num_item estiver o valor 991. o campo desconto deverá ser somando com o valor total de de produtos. caso contrario será subtraído do valor total de produtos

    usei essa query abaixo


    Tipo Cnpj Modelo Serie Nota Cfop Num_Item Cod_Produto Qtd Valor Desconto
    54 10867755000141    55 1 321 2102 1 145 279 17982,02 0,02
    54 10867755000141    55 1 321 2102 2 131 44 6160 0
    54 10867755000141    55 1 321 2102 3 394 143 9308,01 0,01
    54 10867755000141    55 1 321 2102 4 276 13 702 0
    54 10867755000141    55 1 321 2102 5 1213 5 260 0
    54 10867755000141    55 1 321 2102 6 1215 4 208 0
    54 10867755000141    55 1 321 2102 7 1214 3 156 0
    54 10867755000141    55 1 321 2102 8 457 3 162 0
    54 79530622000181    55 1 3172 2102 1 144 140 9912 0
    54 79530622000181    55 1 3172 2102 2 146 170 7926,01 0,01
    54 79530622000181    55 1 3172 2102 991 0 1 0 465

    segunda-feira, 19 de agosto de 2013 19:01

Respostas

Todas as Respostas

  • Aonde está a query?
    segunda-feira, 19 de agosto de 2013 19:04
  • Gildo, sua query não veio, só para entender, caso o num_item for igual a 991 o campo desconto devera ser somado o desconto + o valor,se for diferente de 991 deve ser o desconto - valor, certo ?

    Alexandre Matayosi Conde Mauricio.

    segunda-feira, 19 de agosto de 2013 19:05
  • Olá Gildo,

    Você fazer assim:

    Select Case

    when num_item = 991 then (valor + Desconto)

    else (valor - Desconto)

    end as valor

    from <table>

    Espero ter ajudado.

    Roberto Galvão
    MCITP - Administration SQL Server 2008
    MCITP - Developer SQL Server 2008
    MCSA - SQL Server 2012


    Roberto Galvão | MCTS | MCITP | Microsoft Partner |

    • Sugerido como Resposta Roberto Galvão segunda-feira, 19 de agosto de 2013 19:12
    • Marcado como Resposta Alysson Queiroz quinta-feira, 22 de agosto de 2013 20:24
    • Não Marcado como Resposta gildo_santos segunda-feira, 26 de agosto de 2013 16:23
    segunda-feira, 19 de agosto de 2013 19:07
  • Fala, Gildo!

    Você já pensou em utilizar os comandos if/else ou case?

    Caso seu banco de dados seja SQL Server dê uma olhada neste link: http://www.devmedia.com.br/programando-no-sql-server/22770

    Isso pode resolver:

    SELECT IdProduto, Nome, Tipo = 
    CASE 
      WHEN 'A' THEN 'Produto Nacional' 
      WHEN 'B' THEN 'Produto dos Estados Unidos' 
      WHEN 'C' THEN 'Produto da China' 
    ELSE 'Produto de outros países' 
    END AS [Tipo do Produto] 
    FROM Produtos


    Sócrates Lopes
    Mircosoft MTA
    socrates@socrateslopes.com.br

    • Sugerido como Resposta Sócrates Lopes segunda-feira, 19 de agosto de 2013 19:09
    segunda-feira, 19 de agosto de 2013 19:08
  • exatamente desse jeito.. a minha query ainda faz o rateio do valor do desconto pelos items da nota( caso o num_item = 991) senão o valor do desconto vai subtrair com o valor total dos produtos.

    With CTE_Frete as
    (
    select
    Nota,
    sum(valor) as total,
    sum(desconto) as d
    from Registro54
    group by Nota
    )
    select
    F.nota,
    F.valor,
    num_item,
    desconto,
    Valor = ((cte.d * f.valor)/CTE.total)
      from Registro54 as F
    inner join CTE_Frete as CTE on F.Nota = CTE.Nota
    where f.Nota = 3172

    segunda-feira, 19 de agosto de 2013 19:12
  • Olá,

    Ficaria assim a sua condição:

    With CTE_Frete as
    (
    select
    Nota,
    sum(valor) as total,
    sum(desconto) as d
    from Registro54
    group by Nota
    )
    select
    F.nota,
    case
    when num_item = 991 then (F.valor+desconto)
    else (F.valor-desconto)
    end as valor,
    num_item,
    desconto,
    Valor = ((cte.d * f.valor)/CTE.total)
       from Registro54 as F
    inner join CTE_Frete as CTE on F.Nota = CTE.Nota
    where f.Nota = 3172

    espero ter ajudado.


    Roberto Galvão | MCTS | MCITP | Microsoft Partner |

    • Sugerido como Resposta Roberto Galvão segunda-feira, 19 de agosto de 2013 19:17
    • Marcado como Resposta Alysson Queiroz quinta-feira, 22 de agosto de 2013 20:24
    • Não Marcado como Resposta gildo_santos segunda-feira, 26 de agosto de 2013 14:53
    segunda-feira, 19 de agosto de 2013 19:16
  • Boa tarde

    preciso melhorar o meu script e vou colocar com detalhes o meu problema

    - Segue abaixo os dados de uma nota fiscal:

    - Valor total da Nota  = Somatrio dos Produtos - Desconto( pegar somente os valores de desconto, quanto o Num_item = 999) +  rateio do desconto (somatório do desconto quanto o Num_item <> 999, rateando para os produtos tiver NUm-tem = 999

    EX: Cod 26729

    Valor para ser rateado = 0,09 + 1,41 (valores do Num_item = 999)

        rateio = 1,50 * 72(Valor do Item) / 949,98(Valor Total da Nota) = 0,1136866039285038

    Valor do item = 0,1136866039285038 (rateio) + 72 ( Valor do Item) - 27,57 ( Valor do Desconto do Item) = 45,9236866039285

    ---------------------

    EX: Cod 295

    Valor para ser rateado = 0,09 + 1,41 (somatório valores do Num_item = 999)

        rateio = 1,50 * 372(Valor do Item) / 949,98(Valor Total da Nota) = 0,5873807869639361

    Valor do item = 0,5873807869639361 (rateio) + 372 ( Valor do Item) - 77 ( Valor do Desconto do Item)295,5873807869639

    e assim por diante

    Prceciso de ajuda

    segunda-feira, 26 de agosto de 2013 16:39
  • Deleted
    • Marcado como Resposta gildo_santos quarta-feira, 28 de agosto de 2013 10:50
    segunda-feira, 26 de agosto de 2013 19:46