一位同事正在尝试在具有自定义报告功能的ERP系统中生成报告;底层数据库是Oracle 11g。这里的重要事实是,ERP报告功能可能限制了我们可以为此报告采取的方法。这是我的同事的怀疑,但我不太了解它确认这一点。
问题:
我们有一个表,详细介绍了公司,我们称之为中的位置Roles
,而另一台存储谁是分配给每个角色给定的时间窗口,我们将称之为PersonRoles
对于特定日期,我们希望返回具有特定角色的人或人(可能有多个人同时履行相同的角色)。
但是,有时角色会在一段时间内空缺;例如,如果PersonA从1月到5月持有角色,而PersonB从8月到12月持有该角色,则会有2个月的窗口,其中没有人在帖子内。在这种情况下,当我们查询这样的一天(6月/ 7月)时,我们想要返回标准结果(比如'空置')。
我不仅有兴趣听到“最佳”方法,而且其他方法可能更适合此报告工具的假设限制,因此也欢迎他们。
答案 0 :(得分:3)
在角色ID 上从Roles
到PersonRoles
表的左外连接和日期。包含coalesce(PersonRoles.PersonIdentifier,'Vacant')
项。
答案 1 :(得分:3)
在不知道报告工具的局限性的情况下,很难回答这个问题。但最简单的方法是进行外连接。
的内容SELECT r.role_name,
nvl( pr.person_name, 'Vacant' )
FROM roles r
LEFT OUTER JOIN personRoles pr
ON( r.role_id = pr.rold_id
AND <<some date parameter>> BETWEEN pr.start_date AND pr.end_date)