Array
(
)

dúvida com consulta

Victor Pavia
   - 04 jan 2012

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

Emerson
   - 10 jan 2012

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

pergunta: esse valordesp deve mesmo ser somado a cada item da cesta ?