Gerando linhas no Oracle

Uma das coisas interessantes também vistas no Oracle, é a possibilidade de gerar linhas! Esses dias eu vi utilidade para isso, utilizei num relatório onde mostra informações por período. (08:00 à 08:30, etc).

A seguinte query foi usada para obter dados de uma tabela por período:

SELECT TO_CHAR(TO_DATE(TO_CHAR(TO_DATE('07:30', 'HH24:MI'), 'SSSSS') + LEVEL * 1800, 'SSSSS'),'HH24:MI') INICIO, 
       TO_CHAR(TO_DATE(TO_CHAR(TO_DATE('08:00', 'HH24:MI'), 'SSSSS') + LEVEL * 1800, 'SSSSS'),'HH24:MI') FIM
  FROM DUAL
  CONNECT BY LEVEL <= 19

Acho que é comum utilizarem uma tabela temporária com os intervalos e fazer o join... Mas gerando diretamente dessa forma, achei mais interessante. Esta query gera de 08:00-08:30 à 17:00-17:30.
Pelo fato do Oracle incrementar a pseudo coluna LEVEL de 1 em 1, utilizei dessa característica para ir incrementando o tempo, como visto acima. E claro, trabalhando em segundos (por isso o SSSSS).

Simples assim! ;)

Excelente! Sempre que

Excelente!

Sempre que preciso acabo criando uma tabela temporária mesmo. Mas é uma droga. Às vezes eu preciso de um intervalo diferente ou tipo de dado diferente... assim é bem melhor =D

Já tem isso no Hacksql? :P

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.

More information about formatting options