简体   繁体   中英

considering using Cross Apply but not sure

This is my first question on stackoverflow and am looking forward to everyone's feedback and solutions.

I would put my current SQL skills at the lower end of intermediate.

Simple one for most of you: I need to write a query in an oracle SQL environment that returns all transactions after the active employees departure date.

Table looks like this:

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

Transaction table

| 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  | 

I'm trying to avoid a UNION ALL since the table has over 100+ employee records. On researching the use of CROSS APPLY it seemed like it could fit the situation. Any ideas are appreciated. Thanks!

Josh

You can just use a join :

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

You could write this using apply , but I think a join makes the intention more clear.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM