Połączenie tabeli ze zdublowanymi wierszami - TOP 1

0

Cześć,
mam taki problem:
Mam tabelę Wyplaty, która przechowuje IdPracownika w tabeli Pracownicy.
Problem jest taki, że tabela Pracownicy obok IdPracownika ma również zwykłe ID. Różnica jest taka, że IdPracownika identyfikuje pracownika, który może mieć wiele aktualizacji - każda aktualizacja tworzy nowe ID, ale IdPracownika jest stałe (identyfikuje pracownika).
Czyli w tabeli Pracownicy możemy mieć dwa wpisy o ID = 1 i ID = 2, ale IdPracownika w obu przypadkach będzie równe 1 (dotyczy tego samego pracownika).

Problem jest taki, że tabela Wyplaty przechowuje właśnie IdPracownika. Obecnie potrzebuję wydobyć dane z tabeli Wyplaty w tym imię i nazwisko pracownika. Problem jest taki, że jak zrobię to w taki sposób tj.: SELECT * FROM Wyplaty WHERE ... INNER JOIN Pracownicy ON IdPracownika = WPL_IdPrac
to otrzymuję zdublowane wartości (z uwagi na wiele aktualizacji pracowników)...

W jaki sposób połączyć obie tabele tak, by tabela z Pracownikami była ograniczona tylko do najnowszych aktualizacji (najwyższe ID u danego pracownika)?
Z góry dziękuję za pomoc.

1
SELECT * 
FROM 
Wyplaty Wpl 
INNER JOIN (select 
                           row_number() over (partition by IdPracownika order by id desc ) r
                          , * 
                          from Pracownicy) P  ON IdPracownika = WPL_IdPrac and p.r = 1
0

A czy na tabeli Pracownicy nie ma flagi, które dane są aktualne?

0

@Panczo dziękuję za pomoc. Kompletnie tego nie rozumiem, ale jakoś obszedłem problem trochę dookoła :) Nie mniej jednak dziękuję.

1 użytkowników online, w tym zalogowanych: 0, gości: 1