sql - 行号重置

标签 sql sql-server

我有一张 table 。

生产、更改、日期
pr1, '是', 2012-01-01
pr1, '否' , 2012-02-01
pr1, '否' , 2012-03-01
pr1, '是', 2012-04-01
pr1, '是', 2012-05-01
pr1, '否' , 2012-06-01

我正在尝试构建一个 qry 并使用 row_number() 函数来对行进行编号。只是我需要 row_number() 来重置每次更改列的值为 yes 。然后 row_number() 计算必须从头开始。像这样

生产、更改、日期、row_number
pr1, '是', 2012-01-01, 1
pr1, '否' , 2012-02-01, 2
pr1, '否' , 2012-03-01, 3
pr1, '是', 2012-04-01, 1
pr1, '是', 2012-05-01, 1
pr1, '否' , 2012-06-01, 2
...等等

是否有可能仅使用 SQL 来执行类似的操作?我正在查看像 row_number() 这样的窗口函数(按日期排序、prd_prod、更改),但它不起作用。还有其他选择吗?

最佳答案

为了重置 row_number,您必须添加“PARTITION BY”

之前:

select RowOrder=ROW_NUMBER() OVER (ORDER BY WidgetTimeCreated)

之后:

select RowOrder=ROW_NUMBER() OVER (PARTITION BY WidgetType ORDER BY WidgetTimeCreated)

关于sql - 行号重置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15900572/

相关文章:

sql - 如何传递带引号的参数

sql - 查找表中的唯一记录,该记录在另一个表中的特定日期之后不重复

sql - 如何只更新表中的一行?

sql - 多列全外连接

sql - 错误: Cannot use an aggregate or a subquery in an expression used for the group by list

sql - 来自单个表的多个 Count()

c# - 使用 24 小时格式化我的日期的方法

sql - Entity Framework 返回与 SSMS 不同的结果

php - Laravel 中的关系 0...1

mysql - 如何引用外键表来引用另一个表?