考虑使用Cross Apply但不确定

时间:2014-11-10 00:09:32

标签: sql oracle transactions reporting business-intelligence

这是我关于stackoverflow的第一个问题,我期待着每个人的反馈和解决方案。

我会将当前的SQL技能放在中间版的低端。

对于大多数人来说很简单:我需要在oracle SQL环境中编写一个查询,它在活动员工离职日期之后返回所有交易。

表格如下:

| Name  | dept  | departure date |
| John  | Sales | 3.12.2014      | 
| David | IT    | 7.27.2014      | 
| Gary  | Audit | 12.5.2013      | 

交易表

| TransID   | Emp Name | Amount | TransDate | 
| 1         | John     | 25.00  | 3.31.2014 | 
| 2         | David    | 30.00  | 8.13.204  | 
| 3         | Gary     | 15.00  | 1.1.2014  | 

我正在努力避免使用UNION ALL,因为该表有超过100个员工记录。在研究使用CROSS APPLY时,它似乎适合这种情况。任何想法都表示赞赏。谢谢!

约什

1 个答案:

答案 0 :(得分:1)

您可以使用join

select t.*
from employees e join
     transactions t
     on e.emp = t.emp and e.date < t.transdate;

您可以使用apply来撰写此内容,但我认为join会使意图更加明确。