Ir para conteúdo

POWERED BY:

Arquivado

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

victorpavia

consulta SQL

Recommended Posts

Boa tarde a todos,

 

Tenho a seguinte query:

 

select tipocesta,sum(valorbruto) as valorbruto,sum(valorliquido)as valorliquido

from (

select tipocesta, (icb.qtde*icb.valorunit) as valorbruto ,valordesp,(icb.qtde*icb.valorunit) + valordesp as valorliquido


from cestabasica cb inner join itemcestabasica icb on (icb.codcesta = cb.codcesta)

where
dataorcamento >='2012/01/03'
and dataorcamento <='2012/01/03'
and status IS NULL
and filial = 0
and tipocesta <> ''
and tipocesta = 'diversos' 
)t1 

group by tipocesta

having

sum(valorliquido) - sum(valorbruto) > 0

 

Essa query me retorna isso:

 

TipoCesta       ValorBruto              ValorLiquido        QtdeCestas
Diversos      	887.90999999999985	1280.4100000000003      ?

 

Na tabela "cestabasica" existe um campo "qtdecesta".

Gostaria de incluir esse campo junto desta query para retornar a quantidade total de cestas por "TipoCesta".

 

Abaixo a estrutura das tabelas:

Tabela CestaBasica:

 

CREATE TABLE [CestaBasica] (
[codcesta] [char] (6) COLLATE Latin1_General_CI_AS NOT NULL ,
[codcli] [char] (6) COLLATE Latin1_General_CI_AS NULL ,
[nomecli] [char] (60) COLLATE Latin1_General_CI_AS NOT NULL ,
[contato] [char] (20) COLLATE Latin1_General_CI_AS NULL ,
[dataorcamento] [datetime] NULL ,
[vendedor] [char] (20) COLLATE Latin1_General_CI_AS NULL ,
[numseloimetro] [char] (30) COLLATE Latin1_General_CI_AS NULL ,
[dataentrega] [datetime] NULL ,
[endentrega] [char] (60) COLLATE Latin1_General_CI_AS NULL ,
[numentrega] [char] (6) COLLATE Latin1_General_CI_AS NULL ,
[complentrega] [char] (15) COLLATE Latin1_General_CI_AS NULL ,
[bairroentrega] [char] (40) COLLATE Latin1_General_CI_AS NULL ,
[cidadeentrega] [char] (60) COLLATE Latin1_General_CI_AS NULL ,
[condpgto] [char] (15) COLLATE Latin1_General_CI_AS NULL ,
[qtdecesta] [int] NULL ,
[acrescimo] [char] (6) COLLATE Latin1_General_CI_AS NULL ,
[pedido] [bit] NULL CONSTRAINT [DF_CestaBasica_pedido] DEFAULT (0),
[datamontagem] [datetime] NULL ,
[prioridade] [bit] NULL ,
[dataconfirmacao] [datetime] NULL ,
[mascara] [bit] NULL CONSTRAINT [DF_CestaBasica_mascara] DEFAULT (0),
[codclicotacao] [char] (6) COLLATE Latin1_General_CI_AS NULL ,
[modelocesta] [char] (30) COLLATE Latin1_General_CI_AS NULL ,
[cotacao] [char] (12) COLLATE Latin1_General_CI_AS NULL ,
[datacreddia] [datetime] NULL ,
[liberapreco] [bit] NULL CONSTRAINT [DF_CestaBasica_liberapreco] DEFAULT (0),
[atualizapreco] [bit] NULL CONSTRAINT [DF_CestaBasica_atualizapreco] DEFAULT (0),
[confmontador] [varchar] (50) COLLATE Latin1_General_CI_AS NULL ,
[mesref] [char] (20) COLLATE Latin1_General_CI_AS NULL ,
[notarm] [bit] NULL CONSTRAINT [DF_CestaBasica_notarm] DEFAULT (0),
[excluirm] [bit] NULL CONSTRAINT [DF_CestaBasica_excluirm] DEFAULT (0),
[filial] [bit] NULL CONSTRAINT [DF_CestaBasica_filial] DEFAULT (0),
[valordesp] [float] NULL CONSTRAINT [DF_CestaBasica_valordesp] DEFAULT (0),
[usuario] [varchar] (13) COLLATE Latin1_General_CI_AS NULL ,
[datausuario] [datetime] NULL ,
[logultedicao] [varchar] (30) COLLATE Latin1_General_CI_AS NULL ,
[datameta] [datetime] NULL ,
[meta] [bit] NULL CONSTRAINT [DF_CestaBasica_meta] DEFAULT (0),
[frete] [float] NULL ,
[cesta] [bit] NULL ,
[qtdecestareal] [int] NULL ,
[maxdesc] [float] NULL ,
[codclidesc] [varchar] (6) COLLATE Latin1_General_CI_AS NULL ,
[datasaida] [datetime] NULL ,
[motorista] [char] (10) COLLATE Latin1_General_CI_AS NULL ,
[status] [char] (10) COLLATE Latin1_General_CI_AS NULL ,
[pedidocotacao] [bit] NULL ,
[tipocesta] [char] (20) COLLATE Latin1_General_CI_AS NULL ,
[dataCancelamento] [datetime] NULL ,
[motivoCancelamento] [varchar] (50) COLLATE Latin1_General_CI_AS NULL ,
[bonificacao] [bit] NULL ,
CONSTRAINT [PK_CestaBasica] PRIMARY KEY  CLUSTERED 
(
	[codcesta]
) WITH  FILLFACTOR = 90  ON [PRIMARY] 
) ON [PRIMARY]
GO

 

 

Tabela ItemCestaBasica:

 

CREATE TABLE [itemCestaBasica] (
[codcesta] [char] (6) COLLATE Latin1_General_CI_AS NOT NULL ,
[coditemcesta] [char] (6) COLLATE Latin1_General_CI_AS NOT NULL ,
[lote] [char] (15) COLLATE Latin1_General_CI_AS NULL ,
[sublote] [char] (15) COLLATE Latin1_General_CI_AS NULL ,
[codprd] [char] (10) COLLATE Latin1_General_CI_AS NULL ,
[qtde] [float] NULL ,
[nomefantasia] [char] (60) COLLATE Latin1_General_CI_AS NULL ,
[unidade] [char] (6) COLLATE Latin1_General_CI_AS NULL ,
[valorunit] [float] NULL ,
[pesomedida] [float] NULL ,
[prioridade] [bit] NULL CONSTRAINT [DF_ItemCestaBasica_prioridade] DEFAULT (0),
[montagem] [bit] NULL CONSTRAINT [DF_ItemCestaBasica_montagem] DEFAULT (0),
[montador] [varchar] (50) COLLATE Latin1_General_CI_AS NULL ,
[multiplo] [bit] NULL CONSTRAINT [DF_ItemCestaBasica_multiplo] DEFAULT (0),
CONSTRAINT [PK_ItemCestaBasica] PRIMARY KEY  CLUSTERED 
(
	[codcesta],
	[coditemcesta]
) WITH  FILLFACTOR = 90  ON [PRIMARY] ,
CONSTRAINT [FK_ItemCestaBasica_CestaBasica] FOREIGN KEY 
(
	[codcesta]
) REFERENCES [CestaBasica] (
	[codcesta]
) ON DELETE CASCADE  ON UPDATE CASCADE 
) ON [PRIMARY]
GO

 

 

Muito Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Creio que :

 

 

select tipocesta,valorbruto,valorliquido,valordesp,qtdcestas
from (select tipocesta, sum(icb.qtde*icb.valorunit) as valorbruto ,sum(valordesp) valordesp,
            sum(icb.qtde*icb.valorunit) + valordesp as valorliquido,
            count(distinct icb.codcesta) as qtdcestas
  from cestabasica cb inner join itemcestabasica icb on (icb.codcesta = cb.codcesta)
  where	dataorcamento >='2012/01/03'
	  and dataorcamento <='2012/01/03'
     and status IS NULL
     and filial = 0
     and tipocesta <> ''
     and tipocesta = 'diversos'
     group by tipocesta
     having sum(valorliquido) - sum(valorbruto) > 0) t1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala Mota,

 

Cara não posso usar o "count(distinct icb.codcesta) as qtdcestas" porque o "codcesta" representa apenas o cadastro de uma cesta, mas o cliente faz o pedido de cestas e pode pedir quantas cestas quiser, por isso existe o campo "qtdecesta" ja criado na tabela "cestabasica". Ou seja, o cliente pede 50 cestas de R$32,00, faço o cadastro de uma cesta e preencho o campo qtdecesta com 50.

 

Vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Troque

count(distinct icb.codcesta) as qtdcestas

por

sum(qtdcestas) as qtdcestas

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala Mota,

 

Cara vou tentar outra coisa. ME ajuda apenas com esse update:

 

update cestabasica set cestabasica.valorbruto = sum(itemcestabasica.qtde * itemcestabasica.valorunit)

from cestabasica

inner join itemcestabasica on (cestabasica.codcesta = itemcestabasica.codcesta)

where cestabasica.codcesta = '000030'

 

Não existe essa sintaxe, mas eu preciso dar um update em "cestabasica" no campo valorbruto que eu criei.

Não posso dar um "sum" no update.

 

Se tiver uma sugestão, fico grato.

 

Victor

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.