如果值是SQL中的重复,如何使select语句返回"NULL"

Msw*_*ama 4 sql t-sql sql-server sql-server-2012

让我们来看看:

SELECT Name, Surname, Salary, TaxPercentage
FROM Employees
Run Code Online (Sandbox Code Playgroud)

收益:

 Name |Surname     |Salary  |TaxPercentage
-------------------------------------- 
Moosa | Jacobs     | $14000 | 13.5
Temba | Martins    | $15000 | 13.5
Jack  | Hendricks  | $14000 | 13.5
Run Code Online (Sandbox Code Playgroud)

我希望它返回:

 Name |Surname   | Salary  |TaxPercentage
-------------------------------------------  
Moosa | Jacobs   |  $14000 | NULL
Temba | Martins  |  $15000 | NULL
Jack  | Hendricks|  $14000 | 13.5 
Run Code Online (Sandbox Code Playgroud)

由于TaxPercentage的值重复,我希望它最后只出现一次.

Zoh*_*led 7

在sql server 2012及更高版本中,您可以使用Leadwindow函数获取下一行的值.假设您有某种方法对数据进行排序(如标识列),您可以使用此方法:

SELECT Name, 
       Surname, 
       Salary, 
       CASE WHEN TaxPercentage = LEAD(TaxPercentage) OVER (ORDER BY Id) THEN 
         NULL 
       ELSE 
          TaxPercentage 
       END As TaxPercentage 
FROM Employees
ORDER BY Id
Run Code Online (Sandbox Code Playgroud)

小提琴(感谢Lasse V. Karlsen)