본문 바로가기

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.. 더보기