首页 > 解决方案 > 遇到产品时增加行号 - T SQL - 单个查询(不允许多个语句)

问题描述

有一张像下面这样的表格

ID  Vals
1   Product
2   Milk
3   Butter
4   Cheese
5   Yogurt
6   Product
7   Muesli
8   Porridge
9   Product
10  Banana

需要的输出如下

RWNUM   ID  Vals
1       1   Product
1       2   Milk
1       3   Butter
1       4   Cheese
1       5   Yogurt
2       6   Product
2       7   Muesli
2       8   Porridge
3       9   Product
3       10  Banana

每次遇到 Product 时,RWNUM 列的值都会加一。

这需要在单个 TSQL 查询中实现。

欢迎任何想法。

标签: sqlsql-servertsqlsql-server-2012sql-server-2014

解决方案


看起来您想要“产品”的累积总和:

select t.*,
       sum(case when val = 'Product' then 1 else 0 end) over (order by id) as rwnum
from t;

推荐阅读