NÃO CLASSIFICAR CONSULTA

ONBASS 29/03/2016 10:31:36
#460068
Bom dia, pessoal.

Gostaria trazer o resultado da consulta de forma NÃO CLASSIFICADA, e sim, na ordem em que foram entrados os parâmetros em destaque. Conforme imagem em anexo o resultado está ficando na ordem alfabética, como não tenho familiaridade com Postgress peço ajuda dos companheiros.

select DISTINCT
nome_grupo,
coalesce (sum( evento_402) , 0 ) as evento_402,
coalesce (sum( evento_606) , 0 ) as evento_606,
coalesce (sum( evento_608) , 0 ) as evento_608,
coalesce (sum( evento_611) , 0 ) as evento_611,
coalesce (sum( evento_612) , 0 ) as evento_612,
coalesce (sum( evento_614) , 0 ) as evento_614,
coalesce (sum( evento_619) , 0 ) as evento_619,
coalesce (sum( evento_601) , 0 ) as evento_601,
coalesce (sum( evento_599) , 0 ) as evento_599,
coalesce (sum( evento_621) , 0 ) as evento_621,
coalesce (sum( evento_622) , 0 ) as evento_622,
coalesce (sum( evento_1005) , 0 ) as evento_1005,
coalesce (sum( evento_1007) , 0 ) as evento_1007,
coalesce (sum( evento_1017) , 0 ) as evento_1017,
coalesce (sum( evento_1011) , 0 ) as evento_1011,
coalesce (sum( evento_1043) , 0 ) as evento_1043,
coalesce (sum( evento_1045) , 0 ) as evento_1045,
coalesce (sum( evento_1051) , 0 ) as evento_1051,
coalesce (sum( evento_620) , 0 ) as evento_620,
coalesce (sum( evento_623) , 0 ) as evento_623

from
(SELECT distinct
nome_grupo,
case when codigo_vende = [ô]00402[ô] then sum(total) else 0 end as evento_402,
case when codigo_vende = [ô]00606[ô] then sum(total) else 0 end as evento_606,
case when codigo_vende = [ô]00608[ô] then sum(total) else 0 end as evento_608,
case when codigo_vende = [ô]00611[ô] then sum(total) else 0 end as evento_611,
case when codigo_vende = [ô]00612[ô] then sum(total) else 0 end as evento_612,
case when codigo_vende = [ô]00614[ô] then sum(total) else 0 end as evento_614,
case when codigo_vende = [ô]00619[ô] then sum(total) else 0 end as evento_619,
case when codigo_vende = [ô]00601[ô] then sum(total) else 0 end as evento_601,
case when codigo_vende = [ô]00599[ô] then sum(total) else 0 end as evento_599,
case when codigo_vende = [ô]00621[ô] then sum(total) else 0 end as evento_621,
case when codigo_vende = [ô]00622[ô] then sum(total) else 0 end as evento_622,
case when codigo_vende = [ô]01005[ô] then sum(total) else 0 end as evento_1005,
case when codigo_vende = [ô]01007[ô] then sum(total) else 0 end as evento_1007,
case when codigo_vende = [ô]01017[ô] then sum(total) else 0 end as evento_1017,
case when codigo_vende = [ô]01011[ô] then sum(total) else 0 end as evento_1011,
case when codigo_vende = [ô]01043[ô] then sum(total) else 0 end as evento_1043,
case when codigo_vende = [ô]01045[ô] then sum(total) else 0 end as evento_1045,
case when codigo_vende = [ô]01051[ô] then sum(total) else 0 end as evento_1051,
case when codigo_vende = [ô]00620[ô] then sum(total) else 0 end as evento_620,
case when codigo_vende = [ô]00623[ô] then sum(total) else 0 end as evento_623

from

[txt-color=#e80000](select
c.codigo_custo,
case when c.codigo_custo in ([ô]038[ô]) then [ô]CAPS (38)[ô]
when c.codigo_custo in ([ô]010[ô],[ô]050[ô],[ô]074[ô],[ô]076[ô]) then [ô]APOIO MDE GERAL (10,50,74,76)[ô]
when c.codigo_custo in ([ô]11[ô],[ô]048[ô],[ô]75[ô],[ô]77[ô]) then [ô]FUNDEB 40 GERAL (11,48,75,77)[ô]
when c.codigo_custo in ([ô]012[ô],[ô]047[ô],[ô]051[ô],[ô]054[ô],[ô]069[ô],[ô]071[ô],[ô]073[ô],[ô]078[ô]) then [ô]FUNDEB 60 (12,47,51,54,69,71,73,78)[ô]
when c.codigo_custo in ([ô]031[ô],[ô]060[ô]) then [ô]C. PART. (31 e 60)[ô]
when c.codigo_custo in ([ô]039[ô]) then [ô]HOSPITAL 14889-X (39)[ô]
when c.codigo_custo in ([ô]028[ô]) then [ô]PAB 159995-6 (28)[ô]
when c.codigo_custo in ([ô]027[ô]) then [ô]PACS 16076-8 (27)[ô]
when c.codigo_custo in ([ô]032[ô]) then [ô]PSF 16077-6 (32)[ô]
when c.codigo_custo in ([ô]025[ô]) then [ô]ENDEMIAS 15997-2 (25)[ô]
when c.codigo_custo in ([ô]016[ô],[ô]036[ô]) then [ô]SOCIAL E C.TUT.(16 e 36)[ô]
when c.codigo_custo in ([ô]029[ô]) then [ô]GAB.DO PREF.(29)[ô]
when c.codigo_custo in ([ô]007[ô]) then [ô]APOIO A ADM GERAL (7)[ô]
when c.codigo_custo in ([ô]017[ô]) then [ô]AP.AGRI.GERAL (17)[ô]
when c.codigo_custo in ([ô]008[ô]) then [ô]APOIO A FINANÇAS (8)[ô]
when c.codigo_custo in ([ô]022[ô]) then [ô]APOIO A OBRAS (22)[ô]
when c.codigo_custo in ([ô]020[ô]) then [ô]TURISMO 8049-7 (20)[ô]
when c.codigo_custo in ([ô]053[ô]) then [ô]CONTROLE INT.(53)[ô]
when c.codigo_custo in ([ô]055[ô]) then [ô]EJA 17781-4 (55)[ô]
when c.codigo_custo in ([ô]064[ô]) then [ô]APOIO SOCIAL CRAS (64)[ô]
when c.codigo_custo in ([ô]067[ô]) then [ô]APOIO SOCIAL PBV III(67)[ô]
when c.codigo_custo in ([ô]070[ô]) then [ô]SAÚDE BUCAL-16087-3(70)[ô] else [ô][ô] end as nome_grupo,[/txt-color]
a.codigo_vende,
sum(a.valor) as total
from fl_acmes a

inner join fl_cadfu_histo h on
h.codigo_emp = a.codigo_emp and
h.codigo_fil = a.codigo_fil and
h.codigo_tpf = a.codigo_tpf and
h.codigo_cadfu = a.codigo_cadfu and
h.ano = a.ano and
h.mes = a.mes

inner join fl_ccusto c on
c.codigo_emp = h.codigo_emp and
c.codigo_fil = h.codigo_fil and
c.codigo_custo = h.codigo_custo

where a.codigo_emp = [ô]001[ô]
and a.codigo_fil = [ô]001[ô]
and a.ano = @_pvchAno
and a.mes = @_pvchMes
and a.codigo_vende in ([ô]00402[ô],[ô]00599[ô],[ô]00601[ô],[ô]00606[ô],[ô]00608[ô],[ô]00611[ô],[ô]00612[ô], [ô]00613[ô],[ô]00614[ô],[ô]00615[ô],[ô]00619[ô],[ô]00620[ô],[ô]00621[ô],[ô]00622[ô],[ô]00623[ô],[ô]01005[ô],[ô]01007[ô],[ô]01011[ô],[ô]01017[ô],[ô]01043[ô],[ô]01045[ô],[ô]01051[ô])
group by c.codigo_custo, a.codigo_vende) as princ

group by nome_grupo, codigo_vende) as segunda
group by nome_grupo
KURTGU 29/03/2016 12:23:03
#460076
Opa veja se te ajuda....Mais pelo que li no link e dele trazer em ordem alfabetica mesmo...

www.postgresqltutorial.com/postgresql-select-distinct/
ONBASS 29/03/2016 13:35:18
#460079
Citação:

:
Opa veja se te ajuda....Mais pelo que li no link e dele trazer em ordem alfabetica mesmo...

www.postgresqltutorial.com/postgresql-select-distinct/



Obrigado, KURTGU.

Por enquanto não seria isso ainda, mas grato pela tentativa.
Preciso que o retorno obedeça apenas a ordem de entrada da sql, com o itens - em vermelho, naquela devida ordem.
DS2T 30/03/2016 01:35:51
#460113
O que você colocou em vermelho é apenas o Case When... ele não vai te garantir uma ordenação específica.
O que pode ser feito é criar um campo Ordem na sua consulta e verificando assim: (Coloque o código depois dessa linha; when c.codigo_custo in ([ô]070[ô]) then [ô]SAÚDE BUCAL-16087-3(70)[ô] else [ô][ô] end as nome_grupo,)

when  c.codigo_custo in ([ô]010[ô],[ô]050[ô],[ô]074[ô],[ô]076[ô]) then 1


E vai seguindo por essa linha... 2, 3, 4... Esse vai ser o seu campo Ordem.
Quando chegar na consulta Pai você vai lá e manda um Order By com esse campo.

é elegante? Não. é bonito? Não ... mas funciona hahaha
ONBASS 30/03/2016 11:28:31
#460127
Citação:

:
O que você colocou em vermelho é apenas o Case When... ele não vai te garantir uma ordenação específica.
O que pode ser feito é criar um campo Ordem na sua consulta e verificando assim: (Coloque o código depois dessa linha; when c.codigo_custo in ([ô]070[ô]) then [ô]SAÚDE BUCAL-16087-3(70)[ô] else [ô][ô] end as nome_grupo,)

when  c.codigo_custo in ([ô]010[ô],[ô]050[ô],[ô]074[ô],[ô]076[ô]) then 1


E vai seguindo por essa linha... 2, 3, 4... Esse vai ser o seu campo Ordem.
Quando chegar na consulta Pai você vai lá e manda um Order By com esse campo.

é elegante? Não. é bonito? Não ... mas funciona hahaha



DS2T, Obrigado pela resposta.

Após aplicado sua sugestão, o erro persiste, porém creio que estejamos mais próximos da solução.
Em anexo a tela do erro, o destaque creio onde seja o ponto...

Citação:


select DISTINCT
nome_grupo,
coalesce (sum( evento_402) , 0 ) as evento_402,
coalesce (sum( evento_606) , 0 ) as evento_606,
coalesce (sum( evento_608) , 0 ) as evento_608,
coalesce (sum( evento_611) , 0 ) as evento_611,
coalesce (sum( evento_612) , 0 ) as evento_612,
coalesce (sum( evento_614) , 0 ) as evento_614,
coalesce (sum( evento_619) , 0 ) as evento_619,
coalesce (sum( evento_601) , 0 ) as evento_601,
coalesce (sum( evento_599) , 0 ) as evento_599,
coalesce (sum( evento_621) , 0 ) as evento_621,
coalesce (sum( evento_622) , 0 ) as evento_622,
coalesce (sum( evento_1005) , 0 ) as evento_1005,
coalesce (sum( evento_1007) , 0 ) as evento_1007,
coalesce (sum( evento_1017) , 0 ) as evento_1017,
coalesce (sum( evento_1011) , 0 ) as evento_1011,
coalesce (sum( evento_1043) , 0 ) as evento_1043,
coalesce (sum( evento_620) , 0 ) as evento_620,
coalesce (sum( evento_623) , 0 ) as evento_623

from
(SELECT distinct
nome_grupo,
case when codigo_vende = [ô]00402[ô] then sum(total) else 0 end as evento_402,
case when codigo_vende = [ô]00606[ô] then sum(total) else 0 end as evento_606,
case when codigo_vende = [ô]00608[ô] then sum(total) else 0 end as evento_608,
case when codigo_vende = [ô]00611[ô] then sum(total) else 0 end as evento_611,
case when codigo_vende = [ô]00612[ô] then sum(total) else 0 end as evento_612,
case when codigo_vende = [ô]00614[ô] then sum(total) else 0 end as evento_614,
case when codigo_vende = [ô]00619[ô] then sum(total) else 0 end as evento_619,
case when codigo_vende = [ô]00601[ô] then sum(total) else 0 end as evento_601,
case when codigo_vende = [ô]00599[ô] then sum(total) else 0 end as evento_599,
case when codigo_vende = [ô]00621[ô] then sum(total) else 0 end as evento_621,
case when codigo_vende = [ô]00622[ô] then sum(total) else 0 end as evento_622,
case when codigo_vende = [ô]01005[ô] then sum(total) else 0 end as evento_1005,
case when codigo_vende = [ô]01007[ô] then sum(total) else 0 end as evento_1007,
case when codigo_vende = [ô]01017[ô] then sum(total) else 0 end as evento_1017,
case when codigo_vende = [ô]01011[ô] then sum(total) else 0 end as evento_1011,
case when codigo_vende = [ô]01043[ô] then sum(total) else 0 end as evento_1043,
case when codigo_vende = [ô]01045[ô] then sum(total) else 0 end as evento_1045,
case when codigo_vende = [ô]01051[ô] then sum(total) else 0 end as evento_1051,
case when codigo_vende = [ô]00620[ô] then sum(total) else 0 end as evento_620,
case when codigo_vende = [ô]00623[ô] then sum(total) else 0 end as evento_623

from

(select
c.codigo_custo,
case when c.codigo_custo in ([ô]038[ô]) then [ô]CAPS (38)[ô]
when c.codigo_custo in ([ô]010[ô],[ô]050[ô],[ô]074[ô],[ô]076[ô]) then [ô]APOIO MDE GERAL (10,50,74,76)[ô]
when c.codigo_custo in ([ô]11[ô],[ô]048[ô],[ô]75[ô],[ô]77[ô]) then [ô]FUNDEB 40 GERAL (11,48,75,77)[ô]
when c.codigo_custo in ([ô]012[ô],[ô]047[ô],[ô]051[ô],[ô]054[ô],[ô]069[ô],[ô]071[ô],[ô]073[ô],[ô]078[ô]) then [ô]FUNDEB 60 (12,47,51,54,69,71,73,78)[ô]
when c.codigo_custo in ([ô]031[ô],[ô]060[ô]) then [ô]C. PART. (31 e 60)[ô]
when c.codigo_custo in ([ô]039[ô]) then [ô]HOSPITAL 14889-X (39)[ô]
when c.codigo_custo in ([ô]028[ô]) then [ô]PAB 159995-6 (28)[ô]
when c.codigo_custo in ([ô]027[ô]) then [ô]PACS 16076-8 (27)[ô]
when c.codigo_custo in ([ô]032[ô]) then [ô]PSF 16077-6 (32)[ô]
when c.codigo_custo in ([ô]025[ô]) then [ô]ENDEMIAS 15997-2 (25)[ô]
when c.codigo_custo in ([ô]016[ô],[ô]036[ô]) then [ô]SOCIAL E C.TUT.(16 e 36)[ô]
when c.codigo_custo in ([ô]029[ô]) then [ô]GAB.DO PREF.(29)[ô]
when c.codigo_custo in ([ô]007[ô]) then [ô]APOIO A ADM GERAL (7)[ô]
when c.codigo_custo in ([ô]017[ô]) then [ô]AP.AGRI.GERAL (17)[ô]
when c.codigo_custo in ([ô]008[ô]) then [ô]APOIO A FINANÇAS (8)[ô]
when c.codigo_custo in ([ô]022[ô]) then [ô]APOIO A OBRAS (22)[ô]
when c.codigo_custo in ([ô]020[ô]) then [ô]TURISMO 8049-7 (20)[ô]
when c.codigo_custo in ([ô]053[ô]) then [ô]CONTROLE INT.(53)[ô]
when c.codigo_custo in ([ô]055[ô]) then [ô]EJA 17781-4 (55)[ô]
when c.codigo_custo in ([ô]064[ô]) then [ô]APOIO SOCIAL CRAS (64)[ô]
when c.codigo_custo in ([ô]067[ô]) then [ô]APOIO SOCIAL PBV III(67)[ô]
when c.codigo_custo in ([ô]070[ô]) then [ô]SAÚDE BUCAL-16087-3(70)[ô] else [ô][ô] end as nome_grupo, [txt-color=#e80000]<-- possíve local do erro.[/txt-color]

when c.codigo_custo in ([ô]038[ô]) then 1,
when c.codigo_custo in ([ô]010[ô],[ô]050[ô],[ô]074[ô],[ô]076[ô]) then 2,
when c.codigo_custo in ([ô]11[ô],[ô]048[ô],[ô]75[ô],[ô]77[ô]) then 3,
when c.codigo_custo in ([ô]012[ô],[ô]047[ô],[ô]051[ô],[ô]054[ô],[ô]069[ô],[ô]071[ô],[ô]073[ô],[ô]078[ô]) then 4,
when c.codigo_custo in ([ô]031[ô],[ô]060[ô]) then 5,
when c.codigo_custo in ([ô]039[ô]) then 6,
when c.codigo_custo in ([ô]028[ô]) then 7,
when c.codigo_custo in ([ô]027[ô]) then 8,
when c.codigo_custo in ([ô]032[ô]) then 9,
when c.codigo_custo in ([ô]025[ô]) then 10,
when c.codigo_custo in ([ô]016[ô],[ô]036[ô]) then 11,
when c.codigo_custo in ([ô]029[ô]) then 12,
when c.codigo_custo in ([ô]007[ô]) then 13,
when c.codigo_custo in ([ô]017[ô]) then 14,
when c.codigo_custo in ([ô]008[ô]) then 15,
when c.codigo_custo in ([ô]022[ô]) then 16,
when c.codigo_custo in ([ô]020[ô]) then 17,
when c.codigo_custo in ([ô]053[ô]) then 18,
when c.codigo_custo in ([ô]055[ô]) then 19,
when c.codigo_custo in ([ô]064[ô]) then 20,
when c.codigo_custo in ([ô]067[ô]) then 21,
when c.codigo_custo in ([ô]070[ô]) then 22,

a.codigo_vende,
sum(a.valor) as total

from fl_acmes a

inner join fl_cadfu_histo h on
h.codigo_emp = a.codigo_emp and
h.codigo_fil = a.codigo_fil and
h.codigo_tpf = a.codigo_tpf and
h.codigo_cadfu = a.codigo_cadfu and
h.ano = a.ano and
h.mes = a.mes

inner join fl_ccusto c on
c.codigo_emp = h.codigo_emp and
c.codigo_fil = h.codigo_fil and
c.codigo_custo = h.codigo_custo

where a.codigo_emp = [ô]001[ô]
and a.codigo_fil = [ô]001[ô]
and a.ano = @_pvchAno
and a.mes = @_pvchMes
and a.codigo_vende in ([ô]00402[ô],[ô]00599[ô],[ô]00601[ô],[ô]00606[ô],[ô]00608[ô],[ô]00611[ô],[ô]00612[ô], [ô]00613[ô],[ô]00614[ô],[ô]00615[ô],[ô]00619[ô],[ô]00620[ô],[ô]00621[ô],[ô]00622[ô],[ô]00623[ô],[ô]01005[ô],[ô]01007[ô],[ô]01011[ô],[ô]01017[ô],[ô]01043[ô],[ô]01045[ô],[ô]01051[ô])
group by c.codigo_custo, a.codigo_vende) as princ

group by nome_grupo, codigo_vende) as segunda
group by nome_grupo
order by c.codigo_custo [txt-color=#e80000]<-- classificação adicionada.[/txt-color]

DS2T 30/03/2016 15:33:37
#460147
A gente esqueceu de colocar o [Ô]case[Ô] na frente cara hahahaha

case when c.codigo_custo in ([ô]038[ô]) then 1...
Faça seu login para responder