遇到产品时增加行号 - T SQL - 单个查询(不允许多个语句)
Posted
技术标签:
【中文标题】遇到产品时增加行号 - T SQL - 单个查询(不允许多个语句)【英文标题】:Increase Row Number when ever Product is encountered - T SQL - Single Query (More than one statement not allowed) 【发布时间】:2021-08-26 20:10:11 【问题描述】:下面有个表格
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 查询中实现。
欢迎提出任何想法。
【问题讨论】:
根据问题指南,请展示您尝试过的内容并告诉我们您发现了什么(在本网站或其他地方)以及为什么它不能满足您的需求。请不要标记多个版本的 SQL Server,除非您特别需要两者的解决方案? 【参考方案1】:看起来您想要“产品”的累积总和:
select t.*,
sum(case when val = 'Product' then 1 else 0 end) over (order by id) as rwnum
from t;
【讨论】:
以上是关于遇到产品时增加行号 - T SQL - 单个查询(不允许多个语句)的主要内容,如果未能解决你的问题,请参考以下文章