我是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列,其余值为空或空格。
答案 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