让我们假设SQL中有一个非常简单的查询
SELECT Col1,Col2 From Table1它给我的结果是:
Col1 Col2
A 5
A 7
A 2
B 1
B 1
B 4
B 0
C 4
C 1
C 2我希望按Col1生成的组和Col2生成的顺序对行进行计数。如果组中某些行在Col2中的值相等,那么它们应该有不同的数字,如示例所示
所以我想要
Col1 Col2 Nr
A 5 2
A 7 3
A 2 1
B 0 1
B 1 2
B 1 3
B 4 4
C 4 3
C 1 1
C 2 2有什么办法吗?
发布于 2016-12-21 15:07:13
如果数据库支持窗口函数,请使用ROW_NUMBER
select col1,col2,row_number() over(partition by col1 order by col2) as nr
from tablename如果数据库不支持窗口函数,请使用
select col1,col2,
(select count(*)+1 from tablename t1 where t1.col1=t.col1 and t1.col2<t.col2) as nr
from tablename t发布于 2016-12-21 15:08:34
您可以使用row_number窗口函数:
SELECT col1,
col2,
ROW_NUMBER() OVER (PARTITION BY col1 ORDER BY col2 ASC) AS Nr
FROM table1
ORDER BY 1, 2, 3https://stackoverflow.com/questions/41265869
复制相似问题