首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQL -如何标记每行和块的编号

SQL -如何标记每行和块的编号
EN

Stack Overflow用户
提问于 2020-03-29 09:03:01
回答 1查看 107关注 0票数 1

我有一个表列,如下所示

代码语言:javascript
运行
复制
A, A, B, C, A, A, B, D, E, E, E

我想像这样为每一行和区块标注编号

代码语言:javascript
运行
复制
(A, 1), (A, 1), (B, 2), (C, 3), (A, 4), (A, 4), (B, 5), (D, 6), (E, 7), (E, 7), (E, 7)

怎么办?谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-29 20:30:16

假设您有一个这样的表:

代码语言:javascript
运行
复制
SELECT * FROM t ORDER BY ord

let, ord
--------
A, 1
A, 2
B, 3
C, 4
A, 5
A, 6
B, 7
D, 8
E, 9
E, 10
E, 11

如果您这样做:

代码语言:javascript
运行
复制
with cte as(
  select let, ord, case when lag(let) over(order by ord) <> let then 1 else 0 end as letchanged
  from yourtable
)

select let,
  1 + sum(letchanged) over(order by ord rows unbounded preceding) as ctr
from cte

然后你会得到:

代码语言:javascript
运行
复制
let, ctr
--------
A, 1
A, 1
B, 2
C, 3
A, 4
A, 4
B, 5
D, 6
E, 7
E, 7
E, 7
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60908989

复制
相关文章

相似问题

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