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]

Responder a