方案
员工每天都会获得薪水,而且每天都有所不同。他们的工作也有不同的时期。
我有两张桌子。 Table A
包含特定时期内员工的工作信息。如果toDate
为12/31/9999
,则表示该员工在workId
处有效。
Table B
包含所有日期的特定作品的工资额。
在table A
中,我有emplId
,workId
,fromDate
,toDate
在table B
中,我有workId
,payDate
,payAmount
我们必须向所有员工payAmount
查询有效workId
(其toDate
为12/31/9999
)直至当前日期。
E.g。 -
表A
+--------+--------+------------+------------+
| emplId | workId | fromDate | toDate |
+--------+--------+------------+------------+
| 1 | 123 | 01/01/2017 | 01/05/2017 |
| 2 | 456 | 01/01/2017 | 12/31/9999 | ***
| 1 | 123 | 01/06/2017 | 01/11/2017 |
| 3 | 123 | 01/01/2017 | 12/31/9999 | ***
+--------+--------+------------+------------+
表B
+--------+------------+-----------+
| workId | payDate | payAmount |
+--------+------------+-----------+
| 123 | 01/01/2017 | 11 |
| 123 | 01/02/2017 | 15 |
| 123 | 01/03/2017 | 10 |
| 123 | 01/04/2017 | 10 |
| 123 | 01/05/2017 | 7 |
| 123 | 01/06/2017 | 23 |
| 123 | 01/07/2017 | 57 |
| 123 | 01/08/2017 | 10 |
| 123 | 01/09/2017 | 13 |
| 123 | 01/10/2017 | 11 |
| 123 | 01/11/2017 | 9 |
| 456 | 01/01/2017 | 11 |
| 456 | 01/02/2017 | 15 |
| 456 | 01/03/2017 | 10 |
| 456 | 01/04/2017 | 10 |
| 456 | 01/05/2017 | 7 |
| 456 | 01/06/2017 | 23 |
| 456 | 01/07/2017 | 57 |
| 456 | 01/08/2017 | 10 |
| 456 | 01/09/2017 | 13 |
| 456 | 01/10/2017 | 11 |
| 456 | 01/11/2017 | 9 |
+--------+------------+-----------+
结果表C
+-------+--------+------------+-----------+
| empId | workId | payDate | payAmount |
+-------+--------+------------+-----------+
| 2 | 456 | 01/01/2017 | 11 |
| 2 | 456 | 01/02/2017 | 15 |
| 2 | 456 | 01/03/2017 | 10 |
| 2 | 456 | 01/04/2017 | 10 |
| 2 | 456 | 01/05/2017 | 7 |
| 2 | 456 | 01/06/2017 | 23 |
| 2 | 456 | 01/07/2017 | 57 |
| 2 | 456 | 01/08/2017 | 10 |
| 2 | 456 | 01/09/2017 | 13 |
| 2 | 456 | 01/10/2017 | 11 |
| 2 | 456 | 01/11/2017 | 09 |
| 3 | 123 | 01/01/2017 | 11 |
| 3 | 123 | 01/02/2017 | 15 |
| 3 | 123 | 01/03/2017 | 10 |
| 3 | 123 | 01/04/2017 | 10 |
| 3 | 123 | 01/05/2017 | 7 |
| 3 | 123 | 01/06/2017 | 23 |
| 3 | 123 | 01/07/2017 | 57 |
| 3 | 123 | 01/08/2017 | 10 |
| 3 | 123 | 01/09/2017 | 13 |
| 3 | 123 | 01/10/2017 | 11 |
| 3 | 123 | 01/11/2017 | 9 |
+-------+--------+------------+-----------+
请帮助查询。
答案 0 :(得分:0)
只需将A和B连接在一起,在where子句或内部连接中,只需确保A的toDate大于当前日期。
select *
from tableA A
inner join tableB B on A.workId = B.workId
and A.toDate > getdate()