Oracle에서 CTE 생성
다음을 생성하려고 합니다.CTE
에Oracle
기존 테이블에서 선택하지 않고 데이터가 삽입됩니다.현재 테이블을 만든 후 삭제하는 중입니다.query
완료되었습니다.다음을 생성할 수 있는 방법이 있습니까?CTE
그것이 효과적으로 같은 일을 하나요?현재 코드는 다음과 같습니다.
create table RTG_YEARS
(YR date);
insert into RTG_YEARS values (to_date('2013-01-01', 'yyyy-mm-dd'));
insert into RTG_YEARS values (to_date('2013-12-31', 'yyyy-mm-dd'));
insert into RTG_YEARS values (to_date('2014-01-01', 'yyyy-mm-dd'));
insert into RTG_YEARS values (to_date('2014-12-31', 'yyyy-mm-dd'));
insert into RTG_YEARS values (to_date('2015-01-01', 'yyyy-mm-dd'));
insert into RTG_YEARS values (to_date('2015-12-31', 'yyyy-mm-dd'));
dual에서 날짜 값을 선택하고 모두 결합하여 공통 테이블 식(CTE, 하위 쿼리 팩터링 등)을 만들 수 있습니다.
with RTG_YEARS (YR) as (
select to_date('2013-01-01', 'yyyy-mm-dd') from dual
union all select to_date('2013-12-31', 'yyyy-mm-dd') from dual
union all select to_date('2014-01-01', 'yyyy-mm-dd') from dual
union all select to_date('2014-12-31', 'yyyy-mm-dd') from dual
union all select to_date('2015-01-01', 'yyyy-mm-dd') from dual
union all select to_date('2015-12-31', 'yyyy-mm-dd') from dual
)
select * from RTG_YEARS;
YR
----------
2013-01-01
2013-12-31
2014-01-01
2014-12-31
2015-01-01
2015-12-31
CTE와 관련이 없지만 날짜 리터럴을 사용하여 입력을 조금 줄일 수 있습니다.
with RTG_YEARS (YR) as (
select date '2013-01-01' from dual
union all select date '2013-12-31' from dual
union all select date '2014-01-01' from dual
union all select date '2014-12-31' from dual
union all select date '2015-01-01' from dual
union all select date '2015-12-31' from dual
)
select * from RTG_YEARS;
언급URL : https://stackoverflow.com/questions/38775056/creating-a-cte-in-oracle
'programing' 카테고리의 다른 글
Visual Studio 코드: 컴파일 형식 스크립트 모듈 (0) | 2023.07.19 |
---|---|
날짜 시간을 동부 시간으로 변환하는 방법 (0) | 2023.07.19 |
setup() 메서드 내의 배열(반복())에 액세스하고 싶습니다. (0) | 2023.07.19 |
스프링 부츠는 "템플릿"을 제공합니다.입력 예외:jar에서 실행할 때 "템플릿 확인 중 오류 발생" (0) | 2023.07.19 |
애플리케이션에서 개인 API 키를 저장하고 보호하는 모범 사례 (0) | 2023.07.19 |