Kueri berbeda SQL pada dua tabel

Saya ingin mencari ulasan berbeda (berdasarkan tahun) untuk setiap karyawan yang hanya menampilkan ulasan terbaru (berdasarkan tahun)

Employee List                 Employee Reviews
Number | Employee Name        GUID | Number | Year
1234     John                 x5848  1234     2016
4526     Jim                  xd565  1234     2015
1123     Pam                  cr484  1123     2016

Hasil yang Dibutuhkan:

Number | Name | GUID | Year
1234     John   x5848  2016
1123     Pam    cr484  2016

Saya tidak tahu cara menulis kueri SQL yang akan mengembalikan saya hasil di atas. Adakah yang punya pengalaman dengan pertanyaan seperti ini atau serupa?


person bbadger16    schedule 23.05.2016    source sumber


Jawaban (1)


Anda dapat memberi peringkat pada catatan Anda dengan memberikan nomor baris pada catatan tersebut:

select 
  guid, number, year, 
  row_number() over (partition by number order by year desc) as rn
from employee_reviews;

Ini menghasilkan catatan terbaru (order by year desc) per karyawan (partition by number) baris nomor 1. Oleh karena itu:

select emp.number, emp.name, rev.guid, rev.year
from employee amp
join
(
  select 
    guid, number, year, 
    row_number() over (partition by number order by year desc) as rn
  from employee_reviews
) rev on rev.number = emp.number and rev.rn = 1;
person Thorsten Kettner    schedule 23.05.2016