Eu nestes casos costumo usar bastante o Decode. Não sei se aplica ao teu caso.
Ficaria assim.... select decode(to_char(trx_date,'MM'),'01',count(*),0) mes1, decode(to_char(trx_date,'MM'),'02',count(*),0) mes2, decode(to_char(trx_date,'MM'),'03',count(*),0) mes3, decode(to_char(trx_date,'MM'),'04',count(*),0) mes4, decode(to_char(trx_date,'MM'),'05',count(*),0) mes5, decode(to_char(trx_date,'MM'),'06',count(*),0) mes6, decode(to_char(trx_date,'MM'),'07',count(*),0) mes7, decode(to_char(trx_date,'MM'),'08',count(*),0) mes8, decode(to_char(trx_date,'MM'),'09',count(*),0) mes9, decode(to_char(trx_date,'MM'),'10',count(*),0) mes10, decode(to_char(trx_date,'MM'),'11',count(*),0) mes11, decode(to_char(trx_date,'MM'),'12',count(*),0) mes12 testa ai MARLON ALEXANDRE PASQUALI T.I. - ANALISTA DE DESENVOLVIMENTO Peccin S.A. [ Rua Dr. Sidney Guerra nº 1700 - CEP: 99700-000 - Erechim - Rio Grande do Sul Brasil ] :: <http://www.peccin.com.br/> www.peccin.com.br ::marlon.pasqu...@peccin.com.br:: (54) 3520.9727 _____ De: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] Em nome de Paulo Petruzalek Enviada em: quarta-feira, 21 de dezembro de 2011 13:36 Para: oracle_br@yahoogrupos.com.br Assunto: Re: [oracle_br] Re: Ajuda em Query Ou ao invés de criar uma tabela ele poderia fazer uma view inline com a query: select to_date('01/' || to_char(rownum) || '/2011', 'dd/mm/yyyy') data from dual connect by level <= 12; Paulo --- Em ter, 20/12/11, José Laurindo <jlchia...@yahoo.com.br <mailto:jlchiappa%40yahoo.com.br> > escreveu: De: José Laurindo <jlchia...@yahoo.com.br <mailto:jlchiappa%40yahoo.com.br> > Assunto: [oracle_br] Re: Ajuda em Query Para: oracle_br@yahoogrupos.com.br <mailto:oracle_br%40yahoogrupos.com.br> Data: Terça-feira, 20 de Dezembro de 2011, 17:35 Élcio, como sempre o nosso amigo yahoo!groups fez um Péssimo serviço des-formatando a sua query, mas entendi o básico, creio : negócio é o seguinte, uma query normalmente traz os valores que existem, Não tem Como vc fazer a Query "inventar" valores, okdodoc ? Então vc tem duas possibilidades aí : 1. a mais fácil, imho : crie uma tabela, digamos, TAB_MESES com uma coluna C_DATA e contendo 12 registros, com os valores de 01/01/2011 até 01/12/2011, e faça um OUTER JOIN dessa nova tabela com a sua tabela CRD.CLIENTE : no outer join a informação presente numa tabela mas não presente na outra é lida naturalmente, apenas vindo com NULL na parte faltante, aí com NVL vc transforma o null em zero ou 2. usa funções analíticas : com elas vc pode processar a linha correntemente sendo lida E a linha anteriormente lida na query, aí seria só um caso de comparar o mês corrente com o Mês anteriormente lido, se tiver GAP vc introduz um zero.... É um tantinho mais trabalhoso e complexo de entender mas não exigiria a criação de nada extra no seu banco Tenta aí e se não conseguir, manda o CREATE TABLE e uns INSERTs (** E ** especifica mais detalhadamente a sua versão de banco, só 10g é insuficiente, a gente tem que saber a Edição e o release com 4 dígitos), que a gente pode olhar e palpitar mais... []s Chiappa --- Em oracle_br@yahoogrupos.com.br <mailto:oracle_br%40yahoogrupos.com.br> , Elcio Francisco <elciofrancisco@...> escreveu > > Pessoal tenho uma query aqui para montar uma estatistica anual. Alguns anos as vendas começa em Julho e tem mes que não possui vendas. Porem a estaticas é para o ano todo.Para os mes de janeiro a junho eu queria colocar 0 (zero) isso para a estatistica não ficar furada. Como colocar isso em uma query. > > Queryselect count(*) Qtde_ant --,to_char(data_cadastro,'Month') Mes_Ano_ant ,to_date(to_char(data_cadastro,'Month'),'mm') Mes_Ano_ant ,to_char(data_cadastro,'mm') mes from crd.cliente where to_char(data_cadastro,'yyyy') :2011 group by to_date(to_char(data_cadastro,'Month'),'mm'),to_char(data_cadastro,'mm') order by to_date(to_char(data_cadastro,'Month'),'mm'); Esta ficando conforme modelo abaixoQTDE_ANT MES_ANO_ANT MES101 1/7/2011 07132 1/8/2011 08103 1/9/2011 09129 1/10/2011 10195 1/11/2011 11267 1/12/2011 12 > Eu preciso que fique assim > QTDE_ANT MES_ANO_ANT MES0 1/1/2011 010 1/2/2011 020 1/3/2011 030 1/4/2011 040 1/5/2011 050 1/6/2011 06101 1/7/2011 07132 1/8/2011 08103 1/9/2011 09129 1/10/2011 10195 1/11/2011 11267 1/12/2011 12 > Alguem podera me ajudar? > Versão do Banco : 10G > Muito Obrigado > Elcio > Analista de Sistemas > > P Antes de imprimir pense em sua responsabilidade com o MEIO AMBIENTE > Adote os 3Rs na sua vida: Reduza, Reutilize, Recicle! > > [As partes desta mensagem que não continham texto foram removidas] > ------------------------------------ ---------------------------------------------------------- >Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ ---------------------------------------------------------- >Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ ---------------------------------------------------------- Links do Yahoo! Grupos [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]