2016-09-21 50 views
0

(这是在访问中) 我有一张桌子,里面有工人工资的所有历史记录。每条记录都有员工开始接受该工资的开始日期和我们开始报告此工资的开始日期。为什么呢?法律的东西..(有时起始日期比日期之前我们开始报告吧)加入来自同一张表的两条记录

------------------------------------------------------- 
|WorkerID|StartingDate|ReportingDate|Salary| 
------------------------------------------------------- 
| 001 | 01/01/2015 | 01/01/2015 |10,000| 
| 001 | 01/01/2016 | 01/02/2016 |15,000| 
------------------------------------------------------- 

所以,如果我想打一个支票工人001对2016年1月1日应该是15,000美元,但我必须报告10,000美元。所以现在我需要一个查询,告诉我的工资我要和我应该报告的工资,就像这样:

------------------------------------------------------------ 
|WorkerID|StartingDate|ReportingDate|PaySalary|ReportSalary| 
------------------------------------------------------------ 
| 001 | 01/01/2016 | 01/02/2016 | 15,000 | 10,000 | 
------------------------------------------------------------ 

的表称为Wages_History和我不有如何启动一个线索查询...谢谢!

回答

1

如果我理解正确的话,这是一个简单的过滤器where

select * 
from wages_history 
where reporting_date > starting_date; 

如果是这样的话,那么我会建议你花一些精力来学习SQL。 。 。有很好的书籍,教程和课程。

编辑:

如果你也想以前的工资:

select wh.*, 
     (select top 1 wh2.salary 
     from wages_history wh2 
     where wh2.worker_id = wh.worker_id and 
       wh2.starting_date < wh.starting_date 
     order by wh2.starting_date desc 
     ) as prev_salary 
from wages_history wh 
where reporting_date > starting_date; 
+0

是的,但你怎么把工资都对查询的一个记录? – Lio