重复值在sql server中显示为null

时间:2013-04-29 06:32:05

标签: sql-server-2008 sql-server-2005

我是sql服务器的新手,我有一个表如下

   **Emp_name     |  year  |  rank **
    emp1             2010       1
    emp1             2011       2
    emp1             2012       3
    emp2             2012       1
    emp2             2013       2
    emp3             2009       3
    emp2             2010       4
    emp3             2011       5

Emp_name列有重复值,我想要一个将返回以下结果的查询

**Emp_name     |  year  |  rank **
 emp1             2010       1
 null (emp1)      2011       2
 null (emp1)      2012       3
 emp2             2012       1
 null (emp2)      2013       2
 emp3             2009       3
 null (emp2)      2010       4
 null (emp3)      2011       5

只能看到重复值中的一个值(Emp_name列,其余值为空或空格。

1 个答案:

答案 0 :(得分:0)

试试这个:

CREATE TABLE Table1
    (Emp_name varchar(4), year int, rank int)
;

INSERT INTO Table1
    (Emp_name, year, rank)
VALUES
    ('emp1', 2010, 1),
    ('emp1', 2011, 2),
    ('emp1', 2012, 3),
    ('emp2', 2012, 1),
    ('emp2', 2013, 2),
    ('emp3', 2009, 3),
    ('emp2', 2010, 4),
    ('emp3', 2011, 5)
;

select 
CASE WHEN rn=1 then EMP_NAME else null end EMP_NAME,
year,rank
from 
(
  select *,ROW_NUMBER() over (partition by emp_name order by (select 0)) as rn from Table1
) a