I have a following scenario:
Table Employees:
First Name | Last Name | Department | Salary
-----------|-----------|------------|---------
John | Doe | Finance | 20
John | Doe | R&D | 20
John | null | Finance | 20
John | long | Finance | 20
对于每个(名字,姓氏),我希望只有1行,除非姓氏为空,那么我只想要1行(名字,null)。
对于上面的例子,结果如下:
First Name | Last Name | Department | Salary
-----------|-----------|------------|---------
John | null | Finance | 20
但如果我没有那个记录,结果应该是:
First Name | Last Name | Department | Salary
-----------|-----------|------------|---------
John | Doe | R&D | 20
John | long | Finance | 20
我猜这个答案涉及到一些 Partition By,但是我不确定具体在哪里。
目前我得出了以下结论:
SELECT FirstName,LastName, DEPARTMENT,Salary,RK FROM
(
select * from
SELECT EXT.*,
ROW_NUMBER() OVER(PARTITION BY EXT.FirstName,EXT.LastName
ORDER BY rownum ASC) AS RK
FROM Employees EXT
)
WHERE RK = 1 ;
感谢您!