database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 39352 게시물 읽기
No. 39352
영업일 구하기
작성자
마루아라(maruara)
작성일
2012-03-21 09:28ⓒ
2012-03-21 13:05ⓜ
조회수
7,584


메인테이블

일자 영업일 도시코드
20120321 2 01
20120322 5 02
20120323 4 03



휴일테이블

도시코드 휴일일자
01 20120322
01 20120323
02 20120323
03 20120326


 

메인테이블의 일자에 영업일을 더해서 다음 영업일자를 구해야 합니다.
다음 영업일은 토/일은 기본으로 제외시키고 휴일테이블의 해당 도시에 해당하는 휴일도 제외하여 계산되어야 하는데요.

예를 들면
20120321 +2 영업일은 22,23(휴일), 24,25(토,일) 이므로 20120327일이 나와야 합니다.

Function등을 사용하지 않고 쿼리로만 사용할 수 있는 방법이 있을까요?

 

이 글에 대한 댓글이 총 2건 있습니다.

오라클 11G 기준 재귀쿼리입니다. 이하 버전에서는 안돌아 갑니다.

WITH t1 AS
(
SELECT '20120321' dt, 2 dy, '01' ct FROM dual
UNION ALL SELECT '20120322', 5, '02' FROM dual
UNION ALL SELECT '20120323', 4, '03' FROM dual
)
, t2 AS
(
SELECT '01' ct, '20120322' dt FROM dual
UNION ALL SELECT '01', '20120323' FROM dual
UNION ALL SELECT '02', '20120323' FROM dual
UNION ALL SELECT '03', '20120326' FROM dual
)
, t3(dt, dy, ct) AS
(
SELECT *
  FROM t1
 UNION ALL
SELECT TO_CHAR(TO_DATE(a.dt, 'yyyymmdd') + 1, 'yyyymmdd') dt
     , a.dy
     - CASE WHEN b.dt IS NOT NULL THEN 0
            WHEN TO_CHAR(TO_DATE(a.dt, 'yyyymmdd') + 1, 'd') IN ('1','7') THEN 0
            ELSE 1 END AS dy
     , a.ct
  FROM t3 a
  LEFT JOIN t2 b
    ON a.ct = b.ct
   AND b.dt = TO_CHAR(TO_DATE(a.dt, 'yyyymmdd') + 1, 'yyyymmdd')
 WHERE a.dy > 0
)
SELECT ct, dt
  FROM t3
 WHERE dy = 0
 ORDER BY ct, dt
;

마농(manon94)님이 2012-03-22 17:28에 작성한 댓글입니다.

감사합니다 ^^

마루아라(maruara)님이 2012-04-21 02:51에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
39355BLOB 데이터를 쪼개서 VARCHAR2 컬럼에 넣는 방법 문의합니다.
때지
2012-03-23
4014
39354골든이나 SQL TOOLS FOR ORACLE로 JOB 확인 못하나요? [1]
궁금
2012-03-22
3938
39353동일 OS에서 데이타베이스 마이그레이션 문제 [1]
스테파노
2012-03-21
4045
39352영업일 구하기 [2]
마루아라
2012-03-21
7584
39351xa connection
고은진
2012-03-20
3518
39350시스템 사용자 리스트 추출
김지연
2012-03-20
3687
39349ORACLE EM 의 샘플 가이드가 있을런지요?
데니아
2012-03-20
3368
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.020초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다