[ORACLE]그룹함수로 중복된 컬럼 제거하기
·
Database
-- 2건이상 데이터 SELECT MAX(ID) AS ID, MAX(TIMS_DATE) AS TIMS_DATE, MAX(FUND_CODE) AS FUND_CODE, COUNT(*) AS CNT FROM IFT_FUND_STANDARD_MODIFY WHERE FUND_CODE ='01032' GROUP BY TIMS_DATE||FUND_CODE HAVING COUNT(*) > 1 -- 2건이상 데이터중 과거 데이터 삭제 DELETE -- SELECT꼭 해보고 날려버린다 FROM IFT_FUND_STANDARD_MODIFY WHERE TIMS_DATE||FUND_CODE IN ( SELECT TIMS_DATE||FUND_CODE FROM IFT_FUND_STANDARD_MODIFY WHERE FUND_COD..
[ORACLE]두 테이블의 컬럼 3개 값들 비교 쿼리
·
Database
-- 1,2 컬럼값이 서로 같고 3컬럼값만 다른경우 SELECT * FROM A, B WHERE (A.1 = B.1 AND A.2 = B.2) AND A.3 B.3; -- 1,3컬럼값은 같고 2컬럼값만 다른 경우 SELECT * FROM A, B WHERE (A.1 = B.1 AND A.3 = B.3) AND A.2 B.2; -- 2,3컬럼값은 같고 1컬럼값만 다른 경우 SELECT * FROM A, B WHERE (A.2 = B.2 AND A.3 = B.3) AND A.1 B.1; -- 1,2,3 컬럼이 전부 다른 경우 SELECT * FROM A, B WHERE A.1 B.1 AND A.2 B.2 AND A.3 B.3; 출처 - http://www.gurubee.net/article/59245 ---..
[ORACLE]ALTER COLUMN
·
Database
-- 일반 컬럼수정 ALTER TABLE EM_MMT_TRAN MODIFY RECIPIENT_NUM VARCHAR2(16 BYTE) ------------------------------------------------------------------------------------- -- 일반 컬럼수정(NOT NULL) -- ORA-01442: column to be modified to NOT NULL is already NOT NULL ALTER TABLE EM_MMT_TRAN MODIFY CALLBACK VARCHAR2(16 BYTE) NOT NULL -- DISABLE ALTER TABLE EM_MMT_TRAN DISABLE CONSTRAINT SYS_C0037363 CASCADE --> 일반 ..
[ORACLE]특정문자 자르기(뒤에 보여주기)
·
Database
indexOf 와 같은 예약어 INSTR( 컬럼명 , '찾을문자') lastindexOf 와 같은 예약어 INSTR( 컬럼명 , '찾을문자' , -1) => -1을 붙여주면 뒤에서 부터 문자를 찾는다. SELECT DISTINCT TARGET_DATE, FROM_NAME, USER_ID, SUBJECT, CONTENT, SUBSTR (CONTENT, INSTR (CONTENT, '전체순자산 총액') -1) FROM SMSQUEUE_HOMEPAGE AND TARGET_DATE >= '2015/01/01' AND CONTENT like '%전체순자산 총액%' ORDER BY TARGET_DATE ASC
[ORACLE] 여러 로우 값을 하나의 컬럼으로 바꾸는 방법
·
Database
* 한 컬럼 중복제거 후 이어 붙이기 SELECT LAW_ID, SUBSTR(XMLAGG(SYS.XMLTYPE.CREATEXML(',' || CONTRACT_GESTALT||'') ORDER BY CONTRACT_GESTALT).EXTRACT('/a1/text()'), 2) CONTRACT_GESTALT, SUBSTR(XMLAGG(SYS.XMLTYPE.CREATEXML(',' || MEMO1||'') ORDER BY MEMO1).EXTRACT('/a1/text()'), 2) MEMO1 FROM ( SELECT LAW_ID, CONTRACT_GESTALT,NVL2(CONTRACT_GESTALT, 'a' || ROW_NUMBER() OVER (PARTITION BY LAW_ID, CONTRACT_GESTAL..
[ORACLE]테이블의 컬럼을 변경한 유저를 아는 방법
·
Database
SELECT OWNER, OBJECT_NAME, OBJECT_TYPE, CREATED, LAST_DDL_TIME FROM DBA_OBJECTS WHERE owner = 'APLUSORA' -- 계정 --AND object_name = 'EMS_V_KIUM_CUSTOMER_LETTER' -- 테이블/INDEX/VIEW -- 오너, 테이블명, 타입, 테이블생성날짜, 마지막 DDL 날짜 -- 마지막 DDL 날짜는 GRANT, REVOKE등 해당 OBJECT에 대한 권한작업 시에도 갱신됨 [출처] 제트스윙 블로그 - http://www.zetswing.com
[ORACLE] 자동 증가 컬럼(Sequence) 사용하기
·
Database
Unique Key를 생성하는 방법은 DBMS마다 차이가 있다. MS-SQL은 IDENTITY를, MySQL은 auto_increment와 같이 쉽게 사용할 수 있는 방법이 있는데 오라클에서는 Sequence를 사용하여 다음과 같이 유사하게 구현할 수 있다 1. 자동증가컬럼을 사용하고자 하는 MYTABLE테이블을 생성한다. CREATE TABLE MYTABLE (ID NUMBER, NAME VARCHAR2(20)); 2. CREATE SEQUENCE 라는 문장을 사용하여 SEQ_ID라는 이름의 시퀀스를 만든다. CREATE SEQUENCE SEQ_ID INCREMENT BY 1 START WITH 10000; -- INCREMENT BY 1 : 증가값은 1 -- START WITH 10000 : 1000..