2011-01-03 16 views
5

दोस्तों का उपयोग कर, वहाँ यह सब के अलावा अन्य महीनों सूची किसी भी बेहतर तरीका है:सूची सभी महीनों 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; 

उत्तर:

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

एक और प्रश्न नीचे देखें

इसके अलावा मैं पिछले वर्ष सहित पिछले दो वर्षों की सूची बनाना चाहता हूं। मैंने इस एसक्यूएल क्वेरी को लिखा था। अगर कुछ बेहतर है तो मुझे बताएं।

select extract(year from sysdate) - (level-1) as years 
    from dual 
connect by level <=3 
order by years 
+0

@ksogor और @Rob कृपया एक और सवाल इसके बाद के संस्करण जोड़ा देखो। –

+1

वह दूसरी क्वेरी पर्याप्त है। –

+0

@Rob ठीक है धन्यवाद। –

उत्तर

4

यूप।

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 यह कहता है कि तालिका या दृश्य मौजूद नहीं है। –

+0

आपने अपने डीबी संस्करण के बारे में कुछ भी नहीं लिखा है। इससे मेरा काम बनता है। – ksogor

+0

@ksogor, मैं ऑरैकल एसक्यूएल पर काम कर रहा हूं। –

11

नहीं बेहतर है, लेकिन सिर्फ एक बिट क्लीनर:

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. 

सादर, रोब।

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

रिटर्न:

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; 

सादर, प्रशांत SUTARIA

संबंधित मुद्दे