[firebase-br] Select com subselect e groupby
Sandro Souza
escovadordebits em gmail.com
Qua Out 5 14:01:15 -03 2011
Bom dia/tarde Marcos.
Que tal dividir para conquistar?
Primeiro, um SELECT que retorna as informações sem agrupamento:
select
c.modelo,
c.serie,
c.numnf,
c.data_emissao,
c.parceiro,
c.data_entrada,
c.valor_frete,
c.valor_seguro,
c.vlroutros,
c.vlrnota,
(select first 1
case when fp.prazo_medio = 0 then 1 else 2 end
from
faturas_pagar fp
where
fp.compra_id = c.compra_id) tipo_fatura,
ci.total,
ci.desconto,
ci.ipi_valor,
ci.st_valor_substituicao
from
compras c,
compras_item ci
where
ci.compra_id = c.compra_id
Agora vamos utilizar o resultado desse primeiro SELECT em um mais externo:
select
x.modelo,
x.serie,
x.numnf,
x.data_emissao,
x.parceiro,
x.data_entrada,
x.valor_frete,
x.valor_seguro,
x.vlroutros,
x.vlrnota,
x.tipo_fatura,
sum(x.total) total_mercadorias,
sum(x.desconto) total_descontos,
sum(x.ipi_valor) total_ipi,
sum(x.st_valor_substituicao) total_st
from (
select
c.modelo,
c.serie,
c.numnf,
c.data_emissao,
c.parceiro,
c.data_entrada,
c.valor_frete,
c.valor_seguro,
c.vlroutros,
c.vlrnota,
(select first 1
case when fp.prazo_medio = 0 then 1 else 2 end
from
faturas_pagar fp
where
fp.compra_id = c.compra_id) tipo_fatura,
ci.total mercadoria,
ci.desconto,
ci.ipi_valor,
ci.st_valor_substituicao
from
compras c,
compras_item ci
where
ci.compra_id = c.compra_id) x
group by
1,2,3,4,5,6,7,8,9,10,11
Por favor, teste esse código para ver se houve alguma diferença.
Espero ter ajudado mais que atrapalhado. :D
2011/10/4 Marcos Weimer <marcosweimer em gmail.com>
> Ola!
>
> Estou levando uma "surra" aqui.
>
> Estou tentando fazer um select com um sub-select e um groupby.
> Assim..
>
> select
> c.modelo, c.serie, c.numnf, c.data_emissao, c.parceiro, c.data_entrada,
> c.valor_frete, c.valor_seguro, c.vlroutros, c.vlrnota,
> ( select first 1 case when fp.prazo_medio = 0 then 1 else 2 end from
> faturas_pagar fp where fp.compra_id = c.compra_id) as tipo_fatura,
> sum(ci.total) as total_mercadorias,
> sum(ci.desconto) as total_descontos,
> sum(ci.ipi_valor) as total_ipi,
> sum(ci.st_valor_substituicao) as total_st
>
> from compras c
> inner join compras_item ci on ci.compra_id = c.compra_id
>
> group by 1,2,3,4,5,6,7,8,9,10,11
>
> se retiro o sub-select e o "11" do group by funciona.
>
> o erro que é apresentado é o seguinte:
>
> Invalid expression in the select list (not contained in either an aggregate
> function or the GROUP BY clause).
>
> Alguem ja tentou fazer isto ?
>
> P.S. Ja procurei no google
>
>
>
> -=Ma®©oS=-
> Marcos R. Weimer
> Puma GTE 1974 Tubarão
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
Mais detalhes sobre a lista de discussão lista