오늘 일치하는 지난 달의 날짜를 타겟팅하려고합니다. 그러나 목표 날짜는 해당 월의 영업일 기준으로 계산되어야합니다. 예를 들어, 오늘이 6-JUN-14 일 경우 두 날짜 모두 해당 달에 영업일 기준 16 일이 남았 기 때문에 7-MAY-14를 제공하는 쿼리가 필요합니다. 또한 SQL Developer를 사용하고 있습니다.다른 달의 달 남은 근무일 기준으로 같은 날짜 일치
2
A
답변
1
요일인지 주말인지를 알 수있는 몇 가지 방법이 있지만 NLS 설정이 적용됩니다. 나는 영국에 있으므로 NLS_TERRITORY에 대한 나의 환경 설정에 따라 토요일과 일요일은 날 번호 6과 7이됩니다. 그러나 미국과 같은 다른 영토는 일요일 숫자 1로 일요일을가집니다. Find out more.
select weekday
from (select weekday
, to_char(weekday,'D') as dayn
from (select (sysdate + level) as weekday
from dual
connect by level <= (last_day(sysdate) - sysdate)
)
)
where dayn not in ('6','7')
/
...이 결과 집합을 제공합니다 ...
8* where dayn not in ('6','7')
WEEKDAY
---------
09-JUN-14
10-JUN-14
...
26-JUN-14
27-JUN-14
30-JUN-14
16 rows selected.
SQL>
그래서 우리는 그 논리를 포장 할 수 있습니다
어쨌든,이 쿼리는 이제 사이의 평일 6 월의 끝을 생성 하위 쿼리에서 일 수를 가져오고 일부는 LAST_DAY(), ADD_MONTHS() and TRUNC() magic을 사용하여 지난 달에 대한 유사한 목록을 생성합니다. 월의 날짜의 다음과 같은 범위를 생성
with curr as (select count(*) as nod
From
(
select weekday
from (select weekday, to_char(weekday,'D') as dayn
from (select sysdate + level weekday
from dual
connect by level <= (last_day(sysdate) - sysdate)
)
)
where dayn not in ('6','7')
)
)
, bds as (select trunc(add_months(sysdate, -1), 'MM') fd
, last_day(add_months(sysdate, -1)) ld
from dual)
, prev as (select weekday
, row_number() over (order by weekday desc) rn
from (
select fd + (level-1) weekday
from bds
connect by level <= ld-fd
)
where to_char(weekday,'D') not in ('6','7')
)
select prev.weekday
, rn
from prev
where prev.rn <= (select nod+1 from curr)
order by prev.weekday
/
...
30* order by prev.weekday
WEEKDAY RN
--------- ----------
08-MAY-14 17
09-MAY-14 16
12-MAY-14 15
...
28-MAY-14 3
29-MAY-14 2
30-MAY-14 1
17 rows selected.
SQL>
자,이 범위는 당신이 제안 범위를 일치하지 않습니다. Whitsun 때문입니다. 영국에서는 2014 년 5 월 26 일이 은행 휴무일이었습니다. 그러나 오라클의 날짜 기능이 이러한 일을 처리 할 수있는 방법은 없습니다. 따라서 공휴일을 계산에 포함하려면 참조 테이블을 만들어야합니다.
WEEKDAY RN
--------- ----------
07-MAY-14 17
08-MAY-14 16
...
28-MAY-14 3
29-MAY-14 2
30-MAY-14 1
17 rows selected.
SQL>
관련 문제
- 1. 남은 총 근무일 수를 계산합니다.
- 2. 첫 달의 달 계산 된 달의 달
- 3. 이 달 남은 영업일 수
- 4. 레일에서 특정 달의 근무일 수를 찾는 방법
- 5. 달의 첫 번째 달 가져 오기
- 6. SQL - 근무일 기준으로 특정 날짜를 얻으십시오
- 7. 같은 달 지난 달의 시대를 찾는 방법은 무엇입니까?
- 8. 다음 달의 최종 날짜 : SSRS
- 9. 달 첫 번째 날짜 선택
- 10. SQL 지난 달 날짜 일
- 11. <= 오늘 같은 달 날짜 전
- 12. 날짜 비교 및 남은 남은 시간 표시
- 13. 한 달의 배열과 비교 한 달
- 14. 그 달의 마지막 날 수에 매핑 달
- 15. list 지난 달의 이름 (현재 날짜) MySQL
- 16. jquery 한 달에 날짜 obj의 목록과 다른 달의 날짜
- 17. Datepicker 지난 달 선택 가능 날짜
- 18. 두 달 간의 보간 월간 날짜 R
- 19. 날짜 - 시간 - 분 - 근무일 - 공휴일 ..... 혼동
- 20. Django 날짜 필터 달의 날짜로
- 21. 날짜 범위 그룹 달
- 22. Crystal Report의 경우 지난 달의 데이터와 이번 달의 같은 날짜의 데이터를 비교 작성해야합니다
- 23. 주어진 날짜 사이의 근무일 수를 계산하는 방법
- 24. 같은 달 두 SUMS
- 25. 계산 업데이트 근무일 오늘
- 26. SAS yyyymmdd 달의 마지막 날짜
- 27. 자바 스크립트로 달의 영업일 계산하기
- 28. 빼기 시작 날짜 시간과 종료 날짜 시간 (근무일 포함)
- 29. PHP의 날짜 함수 : 다시 달
- 30. 남은 시간은 얼마나됩니까? PHP + 날짜
은 당신이 무엇을 시도했다의 예를 줄 수
... 우리에게이 결과 집합을 제공합니다 ... : 우리는이 같은 하위 쿼리에 해당 테이블을 포함 할 수있다? – pstenstrm
먼저 이것을 확인하십시오 : http : //stackoverflow.com/questions/252519/count-work-days-between-two-dates –
@manu - 날짜 산술은 RDBMS의 다양한 맛이 상당히 다릅니다. 따라서 SQL Server 솔루션에 대한 링크가 특히 유용하다고 생각하지 않습니다. – APC