oracle
ORACLE
참조사이트
- https://docs.oracle.com/en/database/index.html
- https://docs.oracle.com/en/database/oracle/oracle-database/12.2/
- https://livesql.oracle.com/apex/f?p=590:49:0::NO:RP,49:P49_TYPES:T
- listagg
- 요일명 한글로
-
NLS_LANG 변경
a. 확인 client : REGEDIT -> HKEY_LOCAL_MACHINE -> SOFTWARE -> ORACLE -> KEY_XE -> NLS_LANG -> KOREAN_KOREA.KO16MSWIN949
server : sql>show parameter NLS b. NLS_LANG 파라미터 설정 -
TO_CHAR() 3번째 인수 추가 to_char(current_date, ‘DY’, ‘NLS_DATE_LANGUAGE=KOREAN’)
- sum over
- sum(누적할 컬럼명) over(partition by 그룹화할 컬럼명 order by 정렬할 컬럼명 정렬 방식)
select department_id,
employee_id,
salary,
sum(salary) over ( order by department_id, employee_id) as "누적합계",
sum(salary) over (partition by department_id order by employee_id) as "부서별누적",
sum(salary) over ( ) as "전체급여"
from employees
order by department_id
- with
-
Alternative Quote (q) Operator (대체 인용 연산자) : 문자열 상수 안에 작은 따옴표가 있는 경우 q 연산자를 이용하여 표현
- pivot/unpivot
- pivot : 행을 열로
- unpivot : 열을 행으로. in 절에 적는 컬럼은 타입이 같아야 함
select *
from (select department_id,
count(*) cnt,
sum(salary) sal
from employees
where department_id is not null
group by department_id )
unpivot ( value for col in (cnt, sal) )
- insert all
insert all into 테이블명(컬럼리스트) values ( 값리스트 )
into 테이블명(컬럼리스트) values ( 값리스트 )
pivot
- 피봇 대상 테이블을 인라인 뷰로 정의한 후 피봇 하고 그 결과를 출력.
- 집계 함수는 회전한 후 각 칸에 쓸 값을 지정.
- 피봇의 FOR 절은 대상 칼럼, IN 절은 그 칼럼에서 열로 만들 값의 목록.
- 필드 값을 따옴표 안에 작성
SELECT *
FROM ( SELECT department_id
, salary
, JOB_ID
FROM employees)
PIVOT ( SUM(salary) AS 합계
FOR department_id
IN( '10','20','30','40' )
)
ORDER BY JOB_ID ;
SELECT *
FROM ( 피벗 할 쿼리문 )
PIVOT ( 그룹함수(칼럼)
FOR 피벗할 칼럼
IN (항목1, 항목2, 항목3 ...)
)
ORDER BY 그룹핑할 컬럼 ;
동적으로 IN 절 항목을 넣으려면 java 단에서 pivot in 절 안의 값을 텍스트로 받아서 처리
execute immediate
create procedure __
begin
execute immediate 'create user ' || id || ' identified by ' || pw;
end;