Galera… alguém sabe me dizer se tem como fazer um group by condicional??? Eu tenho uma tabela no meu banco que tem uma coluna tipo serviço… é de ligação pra celulares… Dai eu queria saber quanto tinha dado os gastos com DDI… mandei agrupar por tipo de serviço porém não tem um tipo “DDI” Màs tem vários tipos que representam DDI… por exempo… CHam EXTERIOR - EUROPA, CHAM EXTERIOR - AMERICA… no caso… tudo que tem a palavra exterior poderia ser agrupado em DDI… alguém sabe como eu faço isso??? ou outra maneira mais viável… Utilizo Mysql e estou fazendo os relatórios no ireport.
para fazer um group by condicional você deve usar a clausula having
algo parecido com isso
[quote]select …
from …
group by attr, attr2
having attr2 >200
[/quote]
André… acho q n fui bem claro… no caso da clausula having eu estaria filtrando meu grupos… o que quero fazer seri tipo… SELECT SUM(valor) FROM ligacoes group by (tipo_servico) WHERE tipo servico like %exterior% HAVING… … Na teoria seria agrupar todos que tivesses exterior como descricao do tipo de servico… entendeu? Claro q naum eh assim q faz… nem sei como fazer isso… nem se da pra fazer…
oi
pense em uma tabela mesmo, como sendo linhas e colunas, o where é um filtro aplicado nas linhas enquanto o having é um filtro aplicado nas colunas…
o que vc precisa fazer não seria isso??
[quote]select tipo_servico,
sum(valor) as total
from ligacoes
where tipo_servico like '%exterior%'
group by tipo_servico, total[/quote]
±… só tem um porém… isso vai agrupar somente as exteriores… na verdade o que eu queria era assim…
quando eu faço um relatorio com agrupando tipo_servico e somo os valores o resultado é ± esse:
500 Min interior - R$600
Chamadas Longa Distancia - R$900
Chamadas Tarifa 0 - R$500
Chamadas Exterior - Europa - R$900
Chamadas Exterior - America - R$300
Chamadas Exterior - Asis - R$100
Eu queria q meu relatorio ficasse assim: (Seria um agrupamento de um agrupamento…)
500 Min interior - R$600
Chamadas Longa Distancia - R$900
Chamadas Tarifa 0 - R$500
DDI - R$1300
Não se se tem outra maneira mais interessante pra fazer isso… aceito sugestões…
[quote=viniciusfaleiro]±… só tem um porém… isso vai agrupar somente as exteriores… na verdade o que eu queria era assim…
quando eu faço um relatorio com agrupando tipo_servico e somo os valores o resultado é ± esse:
500 Min interior - R$600
Chamadas Longa Distancia - R$900
Chamadas Tarifa 0 - R$500
Chamadas Exterior - Europa - R$900
Chamadas Exterior - America - R$300
Chamadas Exterior - Asis - R$100
Eu queria q meu relatorio ficasse assim: (Seria um agrupamento de um agrupamento…)
500 Min interior - R$600
Chamadas Longa Distancia - R$900
Chamadas Tarifa 0 - R$500
DDI - R$1300
Não se se tem outra maneira mais interessante pra fazer isso… aceito sugestões…
[/quote]
oi
não é o caso de usar UNION - parecido com isso
select 'Chamada Longa Distancia' as tipo_servico,
sum(valor) as total
from ligacoes
where tipo_servico like '%DDD%'
group by tipo_servico, total
union
select 'Tarifa 0' as tipo_servico,
sum(valor) as total
from ligacoes
where tipo_servico like '%tarifa 0%'
group by tipo_servico, total
union
select 'Chamada DDI' as tipo_servico,
sum(valor) as total
from ligacoes
where tipo_servico like '%xxx%' or tipo_servico like '%yyy%'
group by tipo_servico, total
Acho que é isso mesmo… vlw pela ajuda e parabens cara… vc manja… hehehehe