【发布时间】:2013-03-28 02:36:49
【问题描述】:
我必须创建一个 oracle sql 来识别在下周内达到里程碑周年纪念的员工。我实际上不得不创建两个代码。一个用于识别今年达到里程碑周年纪念的每位员工,第二个用于识别下周达到里程碑周年纪念的任何员工。
因此,如果我本周运行代码,它将捕获下周有周年纪念日的任何人。对于此代码,我能够创建一个代码来识别特定日期的周年纪念日……但我无法创建一个查看下周所有 7 天并告诉我谁都有周年纪念日的代码。
当查询在今天 2013 年 3 月 27 日运行时,此查询用于识别在 2013 年 3 月 31 日星期日有周年纪念日的任何人。
SELECT a.full_name AS Full_Name,
b.adjusted_svc_date AS Service_Date,
d.name Job_tittle,
TRUNC ( (TO_NUMBER (TO_CHAR (SYSDATE + 4, 'mmddyyyy'))) -- TO_NUMBER (TO_CHAR (SYSDATE+4, 'MM/DD/YYYY'))
- TO_NUMBER (TO_CHAR (b.adjusted_svc_date, 'mmddyyyy')))
AS Years_OF_Service
FROM per_people_x a,
per_periods_of_service b,
per_assignments_x c,
per_jobs d
WHERE a.person_id = c.person_id
AND c.period_of_service_id = b.period_of_service_id
AND c.job_id = d.job_id
AND TRUNC (
(TO_NUMBER (TO_CHAR (SYSDATE + 4, 'mmddyyyy')))
- TO_NUMBER (TO_CHAR (b.adjusted_svc_date, 'mmddyyyy'))) IN
(5, 10, 15, 20, 25, 30)
AND a.person_type_id IN (6, 7)
【问题讨论】:
-
这是一个通用的 Oracle SQL 问题,与 Toad 完全无关。 (它可以在任何允许 Oracle SQL 的环境中运行。)请仅使用实际适用于您的问题的标签。谢谢。
-
你的一周什么时候开始和结束?
-
另外,您似乎正在寻找重要的周年纪念日?第 5 年、第 10 年、第 15 年、第 25 年和第 30 年,但不是第 1 年、第 22 年等。对吗?
-
难题。别忘了 2 月 29 日。通过您使用的减法,您只会看到没有月份或日期的年份显示服务日期 2/29 将在闰年期间,几乎所有时间每四年发生一次,在四个世纪内每 8 年发生三次。两者都不会找到
years rem 5 = 0appart 的人。