3
를 사용하여 배열을 얻는 방법 - 듀얼 테이블내가 날로부터 사이의 년의 결과 집합을 표시 할 오라클 SQL 쿼리
을 예를 들어,에 오라클 SQL을 사용하여 현재까지를
내가 전달하는 경우 - 일로부터 다음 1/1/2000
그것이
를 표시 shoold로 1900 년으로 현재까지
1900
1901
1902
-
-
2000
를 사용하여 배열을 얻는 방법 - 듀얼 테이블내가 날로부터 사이의 년의 결과 집합을 표시 할 오라클 SQL 쿼리
을 예를 들어,에 오라클 SQL을 사용하여 현재까지를
내가 전달하는 경우 - 일로부터 다음 1/1/2000
그것이
를 표시 shoold로 1900 년으로 현재까지
1900
1901
1902
-
-
2000
두 부분이 있습니다 만 년 이 질문에. 일정 범위의 생성은 매우 간단합니다. CONNECT BY와 함께 트릭을 사용하여 here을 시연했습니다. 새해의 일의 최초의 목록을 생성
는편집
매우 간단합니다 :
SQL> select add_months(to_date('01-jan-1900'), (level-1)*12) as year
2 from dual
3 connect by level <= 101
4/
YEAR
---------
01-JAN-00
01-JAN-01
01-JAN-02
...
01-JAN-98
01-JAN-99
01-JAN-00
101 rows selected.
SQL>
당신은 단지 년이 원하는? 그 중 하나에 to_char(... , 'YYYY')
을 사용하십시오. 아니면 체이스로 잘라내서 1900-2000 년의 숫자 목록을 생성하십시오.
요청의 가장 까다로운 부분은 몇 년이 걸리는지입니다. 끝 날짜가 아닌 시작 날짜와 오프셋을 지정하는 것이 더 쉬울 것입니다. 어쨌든 ...
SQL> select to_char(add_months(to_date('&&start_date'), (level-1)*12), 'YYYY') as year
2 from dual
3 connect by level <= (to_number(to_char(to_date('&&end_date'), 'yyyy'))
4 -to_number(to_char(to_date('&&start_date'), 'yyyy'))) + 1
5/
Enter value for start_date: 01-jan-1900
old 1: select add_months(to_date('&&start_date'), (level-1)*12) as year
new 1: select add_months(to_date('01-jan-1900'), (level-1)*12) as year
Enter value for end_date: 01-jan-2000
old 3: connect by level <= (to_number(to_char(to_date('&&end_date'), 'yyyy'))
new 3: connect by level <= (to_number(to_char(to_date('01-jan-2000'), 'yyyy'))
old 4: -to_number(to_char(to_date('&&start_date'), 'yyyy'))) - 1
new 4: -to_number(to_char(to_date('01-jan-1900'), 'yyyy'))) - 1
YEAR
----
1900
1901
1902
...
1998
1999
2000
101 rows selected.
SQL>
질문이 업데이트되었습니다. – Vicky