2011-01-03 27 views
5

Beyler kullanan tüm aylar, bu dışındaki tüm aylar listelemek için daha iyi bir yol yoktur:Liste oracle sql

select to_char(add_months(to_date('01/01/1000', 'DD/MM/RRRR'), ind.l-1), 'MONTH') as month_descr, 
     ind.l as month_ind 
    from dual descr, 
     (select l 
      from (select level l 
        from dual 
       connect by level <= 12 
       ) 
     ) ind 
order by 2; 

CEVAP:

SELECT to_char(add_months(SYSDATE, (LEVEL-1)),'MONTH') as months 
    FROM dual 
CONNECT BY LEVEL <= 1 

BİR DAHA SORU AŞAĞIDA

SEE

Ayrıca, mevcut yıl dahil olmak üzere önceki iki yılı listelemek istiyorum. Bu sql sorgusu yazdım. Daha iyi bir şey varsa bana bildirin.

+0

@ksogor ve @Rob nazik yukarıda eklenen başka bir soru bak. –

+1

Bu ikinci sorgu yeterince iyi. –

+0

@Rob tamam teşekkürler. –

cevap

4

Yup.

1:

SELECT * FROM WWV_FLOW_MONTHS_MONTH; 

2: ( :)

WITH MONTH_COUNTER AS (
    SELECT LEVEL-1 AS ID 
    FROM DUAL 
    CONNECT BY LEVEL <= 12 
) 
SELECT TO_CHAR(ADD_MONTHS(TO_DATE('01/01/1000', 'DD/MM/RRRR'), ID),'MONTH') FROM MONTH_COUNTER; 
+0

@ksogor, tablo veya görünümün mevcut olmadığını söylüyor. –

+0

Db sürümünüz hakkında hiçbir şey yazmadınız. Benim için çalışıyor. – ksogor

+0

@ksogor, oracle sql üzerinde çalışıyorum. –

11

değil daha iyi UPD, ama sadece biraz daha temiz:

SQL> select to_char(date '2000-12-01' + numtoyminterval(level,'month'),'MONTH') as month 
    2  from dual 
    3 connect by level <= 12 
    4/

MONTH 
--------- 
JANUARY 
FEBRUARY 
MARCH 
APRIL 
MAY 
JUNE 
JULY 
AUGUST 
SEPTEMBER 
OCTOBER 
NOVEMBER 
DECEMBER 

12 rows selected. 

Selamlar, Rob.

4
select to_char(add_months(trunc(sysdate, 'yyyy'), level - 1), 'MONTH') months 
    from dual 
connect by level <= 12; 

İade:

MONTHS 
-------------------- 
JANUARY 
FEBRUARY 
MARCH 
APRIL 
MAY 
JUNE 
JULY 
AUGUST 
SEPTEMBER 
OCTOBER 
NOVEMBER 
DECEMBER 

12 rows selected. 
0
SELECT TO_CHAR(TO_DATE(rownum||'-'||rownum||'-'||'2013', 'DD-MM-YYYY'), 'Month') 
FROM all_objects 
WHERE rownum < 13 
1
SELECT to_char(to_date(level,'mm'), 'MONTH') Months FROM DUAL CONNECT BY LEVEL <=12; 

Selamlar, Prasant Sutaria