2016-09-21 9 views
0

(これはアクセスしています) 私は私の労働者の賃金のすべての歴史を持つテーブルを持っています。各記録には、従業員がその賃金を受け取ることを開始した開始日と、この賃金の報告を開始した開始日があります。なぜ?、法的なもの...(時々開始日は、我々はそれを報告し始めた日付よりも古い)同じテーブルの2つのレコードを結合する

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

だから私は2016年1月1日に労働者001のチェックをしたい場合は、それはする必要があります$ 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を学ぶにいくつかの努力を捧げることを示唆しています。 。 。良い本、チュートリアル、コースがあります。

EDIT:

あなたはまた、以前の給与する場合:

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

関連する問題