首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在sql server中使用dense_rank()后保持表的原始顺序

如何在sql server中使用dense_rank()后保持表的原始顺序
EN

Stack Overflow用户
提问于 2015-07-30 17:43:44
回答 1查看 49关注 0票数 0

我有一张桌子:

代码语言:javascript
复制
ID | name | address | code
-----+---------+-----
1  |  b   |   b-11  |  111
2  |  b   |   b-11  |  123
3  |  a   |   a-11  |  456
4  |  a   |   a-11  |  789

我需要如下输出:-

代码语言:javascript
复制
id | name | address | code | Addressid
-----+---------+------+----------
 1 |   b  |   b-11  | 111  | 1
 2 |   b  |   b-11  | 123  | 1
 3 |   a  |   a-11  | 456  | 2
 4 |   a  |   a-11  | 789  | 2

当我使用下面的SQL语句时,我得到了所需的格式,但是表的顺序发生了变化。谁能告诉我如何在不改变表顺序的情况下获得AddressID列值。

代码语言:javascript
复制
select 
    id, name, address, code,
    dense_rank() over (order by name,address) as addressid
from 
    table1

使用上面的代码,我得到了错误的输出,因为-

代码语言:javascript
复制
id| name | address | code | Addressid
--+------+---------+------+----------    
3 |   a  | a-11    | 456  | 1
4 |   a  | a-11    | 789  | 1
1 |   b  | b-11    | 111  | 2
2 |   b  | b-11    | 123  | 2
EN

回答 1

Stack Overflow用户

发布于 2015-07-30 18:05:54

正如我所说的-您没有任何顺序,除非您显式地指定它为-所以这就是您需要做的所有事情-通过向现有查询添加order by id来指定您想要的顺序:

代码语言:javascript
复制
select 
    id, name, address, code,
    dense_rank() over (order by name,address) as addressid
from 
    table1
order by
    id
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31720315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档