当前位置: 代码迷 >> Sql Server >> =============SQL 查询话语===============
  详细解决方案

=============SQL 查询话语===============

热度:59   发布时间:2016-04-24 20:32:37.0
=============SQL 查询语句===============

create table a(lszh int,hdh int)
insert into a(lszh,hdh)
select 1,null union all
select 2,1 union all
select 3,null union all
select 4,1 union all
select 5,2 union all
select 6,2 union all
select 7,null

--查询出如下结果
lszh  hdh  xh
1    null   1
2    1      2
3    null   3
4    1      2
5    2      4 
6    2      4
7    null   5

也就是说hdh如果相同,xh就一样

------解决方案--------------------

SELECT *,DENSE_RANK() OVER (ORDER BY hdh) xh
FROM a
ORDER BY lszh

------解决方案--------------------

SELECT lszh,hdh,DENSE_RANK() OVER (ORDER BY CASE WHEN hdh IS NULL THEN 2000+lszh else hdh END) re
FROM a
ORDER BY lszh
  相关解决方案