본문 바로가기

SQL

oracle xml To understand more about XMLForest in a clear way, Let us see one simple example to create your XML document using a SQL query that could give you some sense to it. Following example creates a XML document per each employee record without using XMLFOREST: NOTE: Casting to XMLTYPE is optional here: SELECT XMLTYPE (XMLELEMENT ("ROOT", XMLELEMENT ("REC", XMLELEMENT ("EMPNO", empno), XMLELEMENT ("EN.. 더보기
ORACLE 행을 열로 , 열을 행으로 [오라클]행->열, 열->행 변환 /*--------------------------------------------------- * ROW => COLUMN의 변환 * COLUMN => ROW의 변환 ----------------------------------------------------*/ --------------- DEPTNO EMPNO --------------- 10 7782 10 7839 10 7934 20 7369 20 7566 20 7788 30 7499 30 7521 30 7654 ------------------------------ DEPTNO EMP1 EMP2 EMP3 ------------------------------ 10 7782 7839 7934 20 7369 756.. 더보기
oracle exists vs in 일반적으로 IN operation은 특정 table(view) data의 row 값에 따른 다른 table의 데이터를 추출해내고자 할 때 자주 사용되는데, 가끔 IN operation을 row가 있는지 check하는 용도로 사용하기도 한다. 그러나 row가 존재하는지에 대해서는 EXISTS라는 근사한 operation을 따로 제공하고 있다. 주의해야 할 점은 EXISTS와 IN은 다른 점이 존재하므로 이에 대해 유의해야 한다. EXISTS는 단지 해당 row가 존재하는지만 check하고 더이상 수행되지 않으나 IN은 실제 존재하는 데이터들의 모든 값까지 확인한다. 따라서 일반적으로 EXISTS operation이 더 좋은 성능을 보이므로 가능하면 EXISTS를 사용하는 것이 바람직해 보인다. 또한가지 E.. 더보기
가로를 세로로 SELECT NAME, ID, FIRST_QUARTER, SECOND_QUARTER, THIRD_QUARTER, FOURTH_QUARTER FROM PINO93.SALETB_SALE SELECT NAME, ID, DECODE(LV, 1, FIRST_QUARTER, 2, SECOND_QUARTER, 3, THIRD_QUARTER, 4, FOURTH_QUARTER) DATA FROM ( SELECT NAME, ID, FIRST_QUARTER, SECOND_QUARTER, THIRD_QUARTER, FOURTH_QUARTER FROM PINO93.SALETB_SALE ), ( SELECT LEVEL LV FROM DUAL CONNECT BY LEVEL 더보기
세로 데이터를 가로로 변환 ) 세로를 가로의 데이터로 만들기 /* Formatted on 2010/10/07 14:11 (Formatter Plus v4.8.8) */ WITH tmp AS (SELECT '1' AS col1, 'A' AS col2 FROM DUAL UNION ALL SELECT '2' AS col1, '가' AS col2 FROM DUAL UNION ALL SELECT '1' AS col1, 'B' AS col2 FROM DUAL UNION ALL SELECT '1' AS col1, 'C' AS col2 FROM DUAL) SELECT col1, LTRIM (SYS_CONNECT_BY_PATH (col2, ','), ',') AS col1 FROM (SELECT col1, col2, ROW_NUMBER () OV.. 더보기
wm_concat 이 안되는 환경(여러개의 레코드를 하나의 필드로) select LTRIM(sys_connect_by_path(name,'|'),'|') AS column_name from ( SELECT ROW_NUMBER() OVER (PARTITION BY ADD_SVC_BANK ORDER BY ADD_SVC_CODE) RID, COUNT (*) OVER (partition by ADD_SVC_BANK ) cnt, ADD_SVC_CODE, ADD_SVC_BANK, ADD_SVC_CODE || ADD_SVC_NAME AS name FROM VM_ARC_SVC_LIST WHERE ADD_SVC_BANK = 'VM00010' ) where level = cnt start with RID = 1 connect by prior ADD_SVC_BANK = ADD_SVC_BAN.. 더보기
Oracle의 숨겨진 함수 wm_concat () - 한 컬럼에 데이터 콤마로 엮기(Clob) 1. Oracle 에는 비공개된 숨겨진 functions 및 parameter가 다수 존재합니다. 그 중에서 최근에 알게 된 것이 "wmsys.wm_concat"라는 함수로 굉장히 강력합니다. 기능적으로 보면 집약하는 함수라고 볼 수 있으며, 정규화된 table을 비정규화해서 출력하는 경우에 딱맞습니다. Oracle11g manual에는 기재되어 있지 않기 때문에 undocumented function(support대상외)이라는 것을 알고 사용하기를 바랍니다. 2. 이제 어떤 기능이 되는지 살펴보겠습니다. 우선 다음과 같은 간단한 table을 만들어 보겠습니다.z name description userid point 취득한 getdate point취득일 3. point가 발생할 때마다 table에 new.. 더보기
Flash Back 사용법 1. Flashback기술 * Flashback 기술은 recovery 기술의 혁신적 발전을 가져왔습니다. * 기존 recovery 기술은 느립니다. - 9i 때부터 Flashback 쿼리가 존재 했었습니다. - 잘못된 데이터만이 아니라 전체 데이터베이스나 파일을 복원해야 합니다. - 데이터베이스 로그의 모든 변경 사항을 검토해야 합니다. ※ 기존 백업이 느린 이유는 백업받아 놓은걸 올려놓고 로그(온라인로그, 아카이브로그)를 적용해야되기 때문에 느립니다. 백업 받아놓은것이 용량이 클경우 속도가 상당히 느립니다. * Flashback은 빠릅니다. - 변경 사항은 행 및 트랜잭션으로 나타낼 수 있습니다. - 변경된 데이터만 복원됩니다. * Flashback 명령은 쉽습니다. - 복잡한 다단계 절차가 포함되지.. 더보기