Fórum Como usar um campo criado com (as) em uma clausula group by? #38978
26/09/2003
0
estou com a seguinte query:
select
extract(month from dataloca)as mes, L.carid,c.carplaca,c.carmodelo,
c.carcor,c.caranomod,c.carsubtipo,min(L.dataloca),max(L.dataloca),
min(L.lockminicial),max(L.lockmfinal),sum(l.valorloca)
from
tabloca L left join tabcarros C on L.carid = c.carid
where
L.carid in (select carid from tabcarros) and
L.loctipomov =´LIBERAR´ and L.cliid >1
group by
extract(month from dataloca)as mes,L.carid,c.carplaca,c.carmodelo,
c.carcor,c.caranomod,c.carsubtipo
Order by
L.carid
//
Quando mando compilar ele dá a msg: token unknow line 11 char 33 (as).
Se eu apenas coloco mes no group by dá:
Column Unknown MES
Se eu não coloco o MES no group by, dá:
Invalid expression in select list(not contained in either an agregate function or the group by clause)
A questão é q preciso ordenar esta query por mes e não por data. Como posso fazer isto?
Obrigado
Aledeol
Curtir tópico
+ 0Posts
26/09/2003
Afarias
1 - manter um campo mês automaticamente preenchido na tabela
ou
2 - criar uma VIEW usando o extract para definir o campo MES e então fazer a query em cima desta VIEW
T+
Gostei + 0
26/09/2003
Aledeol
Gostei + 0
01/02/2006
Nigro
Gostei + 0
01/02/2006
Emerson Nascimento
select extract(month from dataloca) as mes, L.carid, c.carplaca, c.carmodelo, c.carcor, c.caranomod, c.carsubtipo, min(L.dataloca), max(L.dataloca), min(L.lockminicial), max(L.lockmfinal), sum(l.valorloca) from tabloca L inner join tabcarros c on L.carid = c.carid where L.loctipomov = ´LIBERAR´ and L.cliid > 1 group by extract(month from dataloca), L.carid, c.carplaca, c.carmodelo, c.carcor, c.caranomod, c.carsubtipo Order by L.carid
além de não apelidar o campo agregado no [i:6fa385dce1]group by[/i:6fa385dce1], a outra coisa que eu fiz foi o trocar o [i:6fa385dce1]left join[/i:6fa385dce1] por [i:6fa385dce1]inner join[/i:6fa385dce1]. fiz isso porque notei que no where era adicionada uma subselect sem necessidade. as demais alterações foram ´estéticas´
Gostei + 0
01/02/2006
Rodolpho123
select extract(month from dataloca) as mes, L.carid, c.carplaca, c.carmodelo, c.carcor, c.caranomod, c.carsubtipo, min(L.dataloca), max(L.dataloca), min(L.lockminicial), max(L.lockmfinal), sum(l.valorloca) from tabloca L inner join tabcarros c on L.carid = c.carid where L.loctipomov = ´LIBERAR´ and L.cliid > 1 group by extract(month from dataloca), L.carid, c.carplaca, c.carmodelo, c.carcor, c.caranomod, c.carsubtipo Order by 1
O FB permite vc grupar os campos pela ordem no select, referenciando apenas na posição.
Gostei + 0
01/02/2006
Rodolpho123
select extract(month from dataloca) as mes, L.carid, c.carplaca, c.carmodelo, c.carcor, c.caranomod, c.carsubtipo, min(L.dataloca), max(L.dataloca), min(L.lockminicial), max(L.lockmfinal), sum(l.valorloca) from tabloca L inner join tabcarros c on L.carid = c.carid where L.loctipomov = ´LIBERAR´ and L.cliid > 1 group by 1, L.carid, c.carplaca, c.carmodelo, c.carcor, c.caranomod, c.carsubtipo Order by 1
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)