0

我是 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

重复值中只有 1 个值(应看到 Emp_name 列,其余为 null 或空格。

4

1 回答 1

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
于 2013-04-29T06:44:50.420 回答