我有一张桌子:
ID | name | address | code
-----+---------+-----
1 | b | b-11 | 111
2 | b | b-11 | 123
3 | a | a-11 | 456
4 | a | a-11 | 789我需要如下输出:-
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列值。
select
id, name, address, code,
dense_rank() over (order by name,address) as addressid
from
table1使用上面的代码,我得到了错误的输出,因为-
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发布于 2015-07-30 18:05:54
正如我所说的-您没有任何顺序,除非您显式地指定它为-所以这就是您需要做的所有事情-通过向现有查询添加order by id来指定您想要的顺序:
select
id, name, address, code,
dense_rank() over (order by name,address) as addressid
from
table1
order by
idhttps://stackoverflow.com/questions/31720315
复制相似问题