본문 바로가기

[SQL] between구문 사용법 작업을 하다가 생각나는 것을 바로바로 포스팅 하다 보니 참 두서가 없다. select 문을 사용하던 중, 일정 범위 내의 값을 가져와야 하는 상황이 있었다.그럴때 사용할 수 있는 문법이 between 이다. 예시) SELECT 컬럼1, 컬럼2 FROM TEST_TABLE WHERE ID = 1111 AND 컬럼1 BETWEEN 9 AND 13; 또는 SELECT 컬럼1, 컬럼2 FROM TEST_TABLE WHERE 컬럼1 BETWEEN 100 AND 300; 이런 식으로 사용할 수 있다. 더보기
[SQL] Group by 컬럼 사용 팁 쿼리를 작성하다가 다음 같은 오류를 만났다. SQL Error : ORA-00979 : GROUP BY 표현식이 아닙니다[출처] Group by 팁 - 에러 : SQL Error : ORA-00979 : GROUP BY 표현식이 아닙니다.|작성자 최환수 이 오류는 집계 함수를 사용할 때, 집계 함수에 쌓이지 않는 컬럼들은 전부 group by 리스트에있어야 하는데 ... 이 중에 빠진게 있다는 말이 되겠다. ( 집계 합수 : sum(), count()... 등등 ) 다음의 예를 들어 보면 쉽게 이해가 될 것이라 사료된다. SELECT a.ID, a.column1, sum(NVL(b.VALUE, 0))FROM TEST_TABLE a LEFT JOIN TEST_TABLE b ON ( a.ID= b.ID AN.. 더보기
[Oracle Database] MERGE INTO구문 사용법 하나의 저장 프로서지(SP)에서 UPDATE와 INSERT를 같이 사용해야 할 경우가 때때로 있다. 이 상황중에서 하나의 대상 테이블에서 해당 값이 row가 존재한다면 값을 UPDATE하고존재 하지 않는다면 INSERT를 진행해야 하는 경우에서 몇가지 방법이 있겠으나 편리한방법이 존재하기에 적어 두려고 한다. 기존에는 SELECT NVL(MAX(컬럼), 0) INTO 변수 FROM 테이블 WHERE 조건; IF 변수 0 THEN UPDATE 테이블 SET 대상 컬럼 = 적용 값 WHERE 조건ELSE INSERT INTO 테이블 (컬럼...) VALUES ( 적용 값...);END IF; 와 같은 방식을 사용했는데... 역시나 더 좋은 방법이 존재했었다.이 문법은 다음과 같다. MERGE INTO 테이블.. 더보기
[Oracle Database] 형변환(문자열->Number) ※ 기본적으로 개인적인 앎에 대한 메모를 위한 공간입니다. 일을 하다보면 컬럼을 문자열로 지정하고 값은 숫자로 넣을 때가 있다. 왜 그렇게 했는지는 모르겠다. 아마 어떤 거룩한 뜻이 있었던거 같기도 한데 머 일단 넘어가자. 예를 들어 TEMP라는 테이블에 CODE_INDEX 라는 컬럼이 있고, 이 컬럼은 VARCHAR2(2) 라고 하자, 그 컬럼에 값을 1,2,3...30 까지 순서대로 값을 넣었다고 한다면 일반적으로 우리가 SELECT CODE_INDEX FROM TEMP 라고 했을때 기대하는 결과물은 CODE_INDEX12...1011..30 이와 같은 결과물일 것이다. ORDER BY CODE_INDEX ASC 를 하던 말이다.하지만 문자열로 지정되어 있는 컬럼은 SELECT를 해보면 CODE_IN.. 더보기
[Oracle Database] Rownum구문 사용법 일을 하다가 최대 Row가 130인 컬럼에 100개만 반환해달라는 요청을 받았다. 즉, 일반적으로 SELECT를 하면 130개의 ROW가 결과로 반환되는데 그 중에서 100개만 전달해달라는 요청이었는데. 이와 같은 경우에 사용할 수 있는 유용한 명령어(?), 함수(?)가오라클에 있다. 다른 SQL에도 있을꺼 같은데. 일단 귀찮으니 패스. 나중에 꼭 찾아보자. ROWNUM 1. 오라클 에서만 사용가능.2. 조회된 Row의 number를 가지는 가상의 컬럼3. 주로 paging처리, N-Top 조회시 사용. 위의 요청의 경우는 SELECT * FROM 테이블 WHERE ROWNUM 더보기