sql - 在不修改表的情况下,在 SQL SELECT 语句中对行进行分组并添加序列号
问题描述
假设我们有一个这样的表:
日期 | 用户 | 物品 |
---|---|---|
2021-01-01 | 一个 | X |
2021-01-05 | 一个 | 是 |
2021-01-11 | 一个 | Z |
2021-01-01 | 乙 | X |
2021-01-16 | 乙 | 是 |
2021-01-01 | C | X |
2021-01-02 | C | 是 |
2021-01-03 | C | Z |
2021-01-10 | D | X |
2021-01-15 | D | 是 |
我想按日期和项目对每个用户进行分组,并在查询期间添加序列号,而不是通过修改表。对于用户,第一个日期的项目的序列号应该是第一个。对于每个新用户,该数字应该重新开始。我想检索这样的数据:
日期 | 用户 | 物品 | 序列 |
---|---|---|---|
2021-01-01 | 一个 | X | 1 |
2021-01-05 | 一个 | 是 | 2 |
2021-01-11 | 一个 | Z | 3 |
2021-01-01 | 乙 | X | 1 |
2021-01-16 | 乙 | 是 | 2 |
2021-01-01 | C | X | 1 |
2021-01-02 | C | 是 | 2 |
2021-01-03 | C | Z | 3 |
2021-01-10 | D | X | 1 |
2021-01-15 | D | 是 | 2 |
可能吗?我可以检索这样的数据吗?
谢谢!
解决方案
这是做什么row_number()
的:
select t.*,
row_number() over (partition by user order by date) as seqnum
from t;
推荐阅读
- ruby-on-rails - 样式化涉及 ruby on rails 和 bootstrap 的表单
- java - 如何在 Java 中使用 xPath 正确解析此 XML 文件?
- java - 使用 Oracle XML Publisher API 创建 PDF 文档
- c++ - 设计:向两个不同的类公开通用功能
- magento2 - 我无法在 azure 门户上访问我的虚拟机文件
- java - 使用 fxdriver 自动化 javafx 应用程序
- spring-boot - application.properties 中的 web.cors.allowed-origins 不允许特定 URL 的 CORS
- python - 在数字序列上生成一个经过训练的模型并识别下一个数字
- maven - 将 TFS 存储库连接到 Azure DevOps
- intellisense - Feature file 'scenario outline' data array item not being picked by in Step Definition