Dúvida GROUP BY

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