2016-09-21 2 views
0

(Dies ist in Zugriff) Ich habe eine Tabelle mit der gesamten Geschichte der Löhne meiner Arbeiter. Jeder Datensatz hat ein Anfangsdatum, an dem der Mitarbeiter diesen Lohn erhalten hat, und ein Startdatum, an dem wir mit der Meldung dieses Gehalts begonnen haben. Warum ?, Rechte Sachen .. (Manchmal ist das Startdatum ist älter als das Datum haben wir begonnen, die Berichterstattung darüber)Join zwei Datensätze aus der gleichen Tabelle

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

Also, wenn ich einen Scheck für den Arbeiter 001 auf 2016.01.01 machen will, sollte es sein, $ 15.000, aber ich muss $ 10.000 melden. So, jetzt muss ich eine Abfrage, die mir den Lohn sagt ich bezahlen sollte und den Lohn I Bericht sollte, wie folgt aus:

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

Die Tabelle nennt Wages_History und ich habe dont eine Ahnung davon, wie die anfangen Frage ... Danke!

Antwort

1

Wenn ich richtig verstehe, ist dies ein einfacher where Filter:

select * 
from wages_history 
where reporting_date > starting_date; 

Wenn dies der Fall ist, dann würde ich vorschlagen, dass Sie lernen, SQL einige Mühe widmen. . . Es gibt gute Bücher, Tutorials und Kurse.

EDIT:

Wenn Sie auch das vorherige Gehalt wollen:

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

ja, aber wie setzen Sie beide Löhne auf einen Datensatz der Abfrage? – Lio

Verwandte Themen