오라클 GROUP BY 쿼리에서 ROLLUP 함수를 사용하면 손쉽게 합계와 소계를 구할 수 있습니다. ROLLUP 함수는 다차원 집계를 생성하여, 그룹별 합계뿐만 아니라 전체 합계까지 한 번에 계산할 수 있습니다. 특히, 소계 또는 합계를 함께 조회해서 데이터를 반환할 수 있기때문에 통계 작업 쿼리를 만들때 아주 유용하다. 1. GROUP BY 컬럼이 하나인 경우- GROUP BY 절에 ROLLUP 함수를 추가한 후 그룹핑 컴럼을 인자로 넣는다 SELECT job , SUM(sal) FROM emp GROUP BY ROLLUP(job) 2. GROUP BY 컬럼이 두 개 이상인 경우- 합계 및 소계 까지 계산되어 표시된다 SELECT job , deptno , SUM(sal) ..
ORA-24338: 문장 처리가 수행되지 않았습니다 PL-SQL 프로시저(Procedure) 작성 시 프로시저 내 쿼리가 수행되지 않고 프로시저가 종료가 되어 해당 오류가 발생 하였다 아래의 예시를 보면 if문 내의 쿼리가 작성되어 있는데 조건 변수(in_tab, in_gubun)의 값이 잘못 되어서 if내의 쿼리가 수행되지 않고 프로시저가 종료되어 해당 오류 발생 파라미터 변수 값을 수정 후 오류 해결됨
오라클에서 여러 개의 단어를 LIKE로 검색하기 위해서는 동적 쿼리를 사용하거나 LIKE를 OR로 묶어서 사용했다. Oracle 10g부터 정규식 함수가 추가 되었으며 그 중에서 REGEXP_LIKE 함수를 사용하여 다중 검색을 쉽게 할 수 있게 되었다. 기본 사용법 WITH temp_table AS ( SELECT 'Samsung Galaxy Note 4' text FROM dual UNION ALL SELECT 'Apple iPhone 6 Plus' text FROM dual UNION ALL SELECT 'Samsung Galaxy text' text FROM dual UNION ALL SELECT 'Apple iPhone 6' text FROM dual UNION ALL SELECT 'LG G3'..
TO_CHAR를 사용하여 숫자를 문자로 변환하면 소수점 이상이 0일 경우 점(.)으로만 표시되어 변환이 된다. 아래와 같은 포맷(FORMAT) 옵션을 활용하여 변환된 수치 값의 형태를 결정할 수 있다. SELECT TO_CHAR(0.40, 'FM9990.99') STR , RTRIM(TO_CHAR(4, 'FM9990.99'),'.') STR2 --정수일경우 소수점표시 안함 (RTRIM) FROM DUAL;--STR : 0.4 --STR2 : 4 FM9990.99의 의미9는 해당 자리의 숫자를 의미하고 값이 없을 경우 소수점 이상은 공백으로 소수점 이하는 0으로 표시한다.0은 해당 자리의 숫자를 의미하고 값이 없을 경우 0으로 표시하며 숫자의 길이를 고정적으로 표시 할 때 주로 사용한다.FM은 좌우 9로 ..
쿼리(Query)문을 작성하다 보면 오라클에서 제공하는 함수만으로 작성 시 쿼리문이 복잡해 지거나 불가능한 경우도 있다.오라클에서 제공한는 JAVA SOURCE 기능을 사용하면 Java 클래스 생성, 실행이 가능하다. 이 기능을 사용하면 일반 어플리케이션에서 가능한 많은 기능들을 PL/SQL에서 할 수 있을 것이다. 자바(Java) 클래스 생성 자바(Java) 클래스 내부함수 호출을 하는 오라클 함수 생성 1. 자바(Java) 클래스를 생성한다. /* JAVA Class를 생성한다 */CREATE OR REPLACE and RESOLVE JAVA SOURCE NAMED "HelloWorld" AS /*파일명*/ import java.lang.*; import java.io.*; public class H..
오라클(Oracle)에서는 ISNUMERIC(숫자확인) 함수가 없다. 직접 사용자함수를 만들어서 사용하거나 제공하는 다른 함수를 사용하여 값이 숫자인지 확인을 할 수 있다.다음 세 가지 방법을 이용하여 숫자여부를 확인할 수 있다. 방법1. REGEXP_INSTR (정규식 문자열 검색 함수, Oracle 10g 이상 사용가능) - REGEXP_INSTR([숫자값],'[^0-9]') = 0 - 숫자가 아닌 값의 위치를 반환. 반환 값이 없으면 모든 문자가 숫자임방법2. TRANSLATE (문자열 치환 함수, Oracle 8i 이상 사용가능) - TRANSLATE([숫자값],'A1234567890','A') IS NULL - 숫자를 찾아 치환 후 남은 문자가 존재 시 숫자가 아님방법3. 사용자 정의 함수 생성..
오라클 11g부터 PIVOT 기능을 제공합니다. 기존 이하버전에서는 DECODE 함수를 이용하여 로우를 컬럼으로 변경하는 작업을 하였습니다. PIVOT 기능을 이용하면 DECODE의 복잡하고 비직관적인 코드를 조금 더 직관적으로 작성할 수 있습니다. 아쉬운 접은 PIVOT 기능을 사용하더라도 PIVOT을 할 컬럼을 미리 정의를 해 놓아야 한다는 점이다. 상황에 맞게 PIVOT를 사용할지 DECODE를 사용할지 결정해서 사용하면 될꺼 같습니다. SELECT * FROM ( 피벗 대상 쿼리문 ) PIVOT ( 그룹합수(집계컬럼) FOR 피벗컬럼 IN (피벗컬럼값 AS 별칭 ... ) PIVOT 사용법 직군별, 월별 입사 건수 SELECT * FROM ( SELECT job , TO_CHAR(hiredate,..
PL/SQL(Procedure, Package)을 사용하다 보면 동적으로 쿼리(Query)를 생성하거나 텍스트(text) 쿼리를 입력 받아서 실행해야하는 경우가 있다. 다음 두가지 방법을 적절히 사용하면 좋은 결과를 얻을수 있다. EXECUTE IMMEDIATE : Inset, Update, Delete 구문을 실행하거나 Select 구문을 실행 시 INTO를 사용하여 단일 값을 리턴 받을 때 사용 OPEN-FOR : Select 구문을 실행 시 Cursor를 리턴 받을 때 사용 주의 : 바인드 변수(:) 사용 시 쿼리 내부에서 변수명은 의미가 없고 변수 순서, 개수가 USING의 변수 순서, 개수와 일치해야 한다. 바인드 변수가 없다면 USING는 생략가능. 1. EXECUTE IMMEDIATE (IN..
SQL Server 2008, SQL Server 2012 문자(VARCHAR)를 숫자형식(타입)으로 변경하는 방법을 소개한다. numeric과 decimal 타입은 소수점 이하 값을 반올림한다. int, float 타입 보다는 numeric과 decimal 타입을 사용할 것을 권장하며 그 중에서도 decimal 타입을 사용할 것을 권장 한다고 한다. int : 정수 float : 부동소수점 numeric : 실수 decimal : 실수 (numeric 동일) numeric( [전체길이(소수점이하포함)], [소수점이하길이] ) decimal( [전체길이(소수점이하포함), [소수점이하길이] ) 문자 -> 숫자 변환 CONVERT( [숫자형], [값] ) SELECT CONVERT(int, '12') , C..
SQL Server 2008, SQL Server 2012 문자(VARCHAR)를 날짜형식(타입)으로 변경하는 방법을 소개한다. 날짜 형식을 문자를 CONVERT 함수에 넣으면 날짜포맷을 인식하고 날짜(Date)형으로 값을 리턴한다. 날짜만 변환을 하고 싶다면 DATE형을 사용하고 날짜와 시간까지 변환하고 싶다면 DATETIME형을 사용하면 된다. DATE : 날짜 DATETIME : 날짜시간 문자타입 -> 날짜타입 변경 CONVERT( [날짜형식], [문자값] ) SELECT CONVERT (DATE, '2014-12-16') , CONVERT (DATE, '2014/12/16') , CONVERT (DATE, '20141216') , CONVERT (DATETIME, '2014-12-16') , CO..