Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

victorpavia

query

Recommended Posts

Pessoal,

Tenho esta query que calcula o total de notas fiscais. Porém quero diminuir o valor do frete (campo fretevenda na consulta) que é único para a nota.
No exemplo o frete vale 10,00. Nessa query esta diminuindo 100,00, pois esta somando 10,00 para cada item da nota e não no total. A nota possui 10 items. Se alguém puder dar uma força , fico muito grato.

 

select *,totnota1 - totprod as diferenca from(
        select *,case when fretevenda is not null then (totnota - fretevenda) else totnota end as totnota1 from (
        select tm.codfilial,tm.NUMEROMOV,f.nome,tm.IDMOV,tm.DATAEMISSAO,ttm.IDPRD,tp.codigoreduzido,tp.DESCRICAO,ttm.QUANTIDADE,ttm.PRECOUNITARIO as preconota
        ,ttm.precotabela as precoprod,cb.maxdesc,cb.acrescimo, (ttm.precounitario - ttm.precotabela) as difpreco,(ttm.precounitario * ttm.quantidade - ttm.precotabela * ttm.quantidade) as difprecotot, cb.qtdecesta
        ,ttm.precounitario*ttm.quantidade as totnota,ttm.precotabela*ttm.quantidade as totprod, CAST(replace(FRETEVENDA,',','.') as numeric(10,2)) as fretevenda
        from TMOV tm
        left join tmovcompl tmc on (tmc.idmov = tm.idmov)
        inner join TITMMOV ttm on (ttm.IDMOV = tm.IDMOV)
        inner join TPRD tp on (tp.IDPRD = ttm.IDPRD)
        inner join FCFO f on (f.CODCFO = tm.codcfo)
        left join FCFOCOMPL fc on (fc.codcfo = f.codcfo)
        left join varejaocereais.dbo.cestabasica cb on (cb.codcesta = tmc.codigocestas collate database_default)
        WHERE tm.DATAEMISSAO>='27/12/2012'
        AND tm.DATAEMISSAO<='27/12/2012'
        
          AND tm.STATUS <> 'C' AND tm.CODTMV = '2.2.01' and tm.codtmv <> '2.2.29' and tm.codtmv <>'2.2.04'
        
        AND tm.codcfo not in('000337') and f.CODCFO <> '000337'
        and f.codetd = 'MG'
        and serie <> 'ECF' and tm.NUMEROMOV = '000023853'

        
          and tm.codven1 = '0005'
          
        )T1)T2
        order by numeromov,dataemissao

 

 

 

 

O Motta, me da uma força cara.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma saida nestes casos (pelo que entendi) é só somar o frete uma vez.

TITMMOV deve ter um campo suponho que mostre a sequencia do item

 

fazendo

 


(case when ttm.seq = 1 then val_frete else 0 end) val_frete

 

 

ajudou ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Motta, sei que não é nesse tópico o certo. Mas da uma olhada na query abaixo:

- cara ta ocupando 100% de CPU no meu servidor quando eu disparo ela. No caso são as subquerys para buscar "basePIS",

"sittributariapis", "valorpis" e para o cofins que estão pesando essa consulta. Você teria alguma sugestão para melhorar isso?

 

 

drop table saidas_alexandre
select distinct codfilial,NUMEROMOV,dataemissao,DATALANCAMENTO,CODTMV,CODIGOREDUZIDO,
DESCRICAO,NUMEROCCF,descontoitem,acrescimoitem,descontoNota,acrescimoNota, SITTRIBUTARIAPIS,basePIS,baseCofins,
SITTRIBUTARIACOFINS,CODNAT,DESCRICAOCOMPLETA
,sum(vtotalvendaitem) as vtotalvendaitem
into saidas_alexandre
from (
select distinct tm.codfilial,tm.NUMEROMOV,tm.dataemissao,tm.DATALANCAMENTO,tm.CODTMV,tp.CODIGOREDUZIDO,
tp.DESCRICAO,tp.NUMEROCCF,TTM.valordesc as descontoitem,TTM.valordesp as acrescimoitem,tm.VALORDESC as descontoNota
,tm.VALORDESP as acrescimoNota
,(ttm.QUANTIDADE * ttm.PRECOUNITARIO)
- case when ttm.VALORDESC is null then 0 else ttm.VALORDESC end
as vtotalvendaitem
,(select BASEDECALCULO from TTRBMOV where IDMOV = ttm.IDMOV and NSEQITMMOV =
ttm.NSEQITMMOV and CODTRB = 'pis') as basePIS
,(select SITTRIBUTARIA from TTRBMOV where IDMOV = ttm.IDMOV and NSEQITMMOV =
ttm.NSEQITMMOV and CODTRB = 'pis') as sittributariaPIS
,(select valor from TTRBMOV where IDMOV = ttm.IDMOV and NSEQITMMOV =
ttm.NSEQITMMOV and CODTRB = 'pis') as valorPis
,(select BASEDECALCULO from TTRBMOV where IDMOV = ttm.IDMOV and NSEQITMMOV =
ttm.NSEQITMMOV and CODTRB = 'cofins') as baseCofins
,(select SITTRIBUTARIA from TTRBMOV where IDMOV = ttm.IDMOV and NSEQITMMOV =
ttm.NSEQITMMOV and CODTRB = 'cofins') as sittributariaCOFINS
,(select VALOR from TTRBMOV where IDMOV = ttm.IDMOV and NSEQITMMOV =
ttm.NSEQITMMOV and CODTRB = 'cofins') as valorCofins
,d.CODNAT,d.DESCRICAOCOMPLETA
from TMOV tm
inner join TITMMOV ttm on (ttm.IDMOV = tm.IDMOV)
inner join TPRD tp on (tp.IDPRD = ttm.IDPRD)
inner join TPRDFISCAL tpf on (tpf.IDPRD = tp.idprd)
inner join DNATUREZA d on (d.IDNAT = ttm.IDNAT)
left join TTRBMOV ttb on (ttb.IDMOV = ttm.IDMOV and ttb.NSEQITMMOV = ttm.NSEQITMMOV)
where
tm.DATALANCAMENTO >= '02/01/2013'
and tm.datalancamento <= '02/01/2013'
and tm.STATUS <> 'C' and (d.CODnat like '5%')-- and tm.SERIE <> 'ECF'
)T1
group by
codfilial,NUMEROMOV,dataemissao,DATALANCAMENTO,CODTMV,CODIGOREDUZIDO,
DESCRICAO,NUMEROCCF,descontoitem,acrescimoitem,descontoNota,acrescimoNota, SITTRIBUTARIAPIS,basePIS,baseCofins,
SITTRIBUTARIACOFINS,CODNAT,DESCRICAOCOMPLETA
order by DATALANCAMENTO, NUMEROMOV

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.