반응형

DataBase/SQL 6

Access(*.MDB) 비교 쿼리 (오라클의 Decode, Swich Case문 처럼 사용하기)

주로 오라클이나 MS-SQL 어쩌다 싸이베이스 처럼 DB 서버에 붙어 쿼리를 날리다 필요하게 되어 MDB 파일을 열어 값을 가져올일이 생겼는데 ..ㅋㅋ 필요할 듯 하여 정리해 본다.~ switch(조건1, 값1, 조건2, 값2,........ ,조건 n, 값n) 예) SELECT NAME, SWITCH(DEPT='1000','영업부,DEPT='2000','자재부) FROM AAA ================================================================================================== IFF(조건,맞을때 값, 틀릴때 값) : IF 가 아니라 IIF 다.^^ 예) SELECT NAME, IFF(DEPT='1000','영업부','기타부서'..

DataBase/SQL 2010.06.29

오라클- 크로스 탭(cross tab) 쿼리 흉내내기..

row에 있는 값을 컬럼 처럼 쓰고자 할때가 있다. 이럴때 cross tab 쿼리를 쓰는데.. row의 수가 동적일때는 못쓰고 값을 알고 있다는 전제가 깔려 있어 유용할지 모르지만 일단 이런 방법도 있구나 알아 두는것도 나쁘지 않다고 생각한다. 예) 쿼리의 결과가 이렇게 나왔다고 치자 지역 시설물 갯수 서울시 병원 1 서울시 공원 2 부산시 병원 3 부산시 공원 4 이것을 아래와 같이 바꾸고자 한다면 지역(갯수) 병원 공원 서울시 1 2 부산시 3 4 SELECT 지역, MAX(DECODE(시설물,'병원',갯수,0)) 병원 MAX(DECODE(시설물,'공원',갯수,0)) 공원 FROM 테이블 GROUP BY 지역 --꼭 그룹으로 묶는다.

DataBase/SQL 2009.09.01

오라클- 랭크함수 RANK()

그룹안에서 순위를 정할때도 씀 오라클에서는 RANK Function을 사용해서 순위를 간편하게 부여할 수 있습니다. RANK Function는 oracle 8i(8.1.6) 부터 가능합니다. 8.1.6 이전 버전에서는 사용 할 수 없습니다. ORA-923 error 가 발생 합니다. plsql 내에서는 oracle 9i 부터 가능합니다. 8.1.6에서는 ORA-900 error가 발생 합니다. -- scott유저로 접속을 합니다. SQLPLUS scott/tiger -- RANK() 함수를 사용하여 급여 순으로 순위를 부여한 예제 입니다. -- RK의 출력값을 보면 급여가 같으면 같은 순위로 부여가 됩니다. SQL>SELECT empno, ename, sal, RANK() OVER (ORDER BY sa..

DataBase/SQL 2008.07.24

sybase 페이징 기법

sybase 는 rownum 등을 제공하지 않아~ 페이징 처리가 까다롭다. 전에 프로젝트에서 사용하던 방법인데 스토어 프로시져를 만들고 페이징을 위한 파라메터를 넘겨주어 값을 받아오는 형태인다. 일단 임시테이블에 모든 값을 부어넣고 조인을 걸어 원하는 페이징 열만 가져오기 때문에 그닥 좋은 방법처럼 보이지는 않을 수도 있으나 더 좋은 방법이 떠오르지 않음...^^ 예) create proc 페이징( -- 프로시져 생성 @Page_No int = NULL, -- 페이지 번호 변수 @List_Rows int = NULL, -- 뽑아올 열 갯수 변수 ) as declare @Last_Row decimal(10,0), @First_Row decimal(10,0) create table #임시테이블 ( -- 임시..

DataBase/SQL 2008.07.24
반응형