[英]Auto-increment the value only when the value of another column changes sql server
Let's say I have this (SQL server) database, sorted by value A and value B should be incremented only when the value A gets change:假设我有这个(SQL 服务器)数据库,按值 A 排序,只有当值 A 发生变化时,值 B 才应增加:
BillNo Value B BillNo 值 B
SC-P1100 1 SC-P1100 1
SC-P1100 1 BillNo changes SC-P1100 1 票据无变化
SC-blb00 2 BillNo changes SC-blb00 2 法案无变化
SC-P6010 3 SC-P6010 3
SC-P6010 3 SC-P6010 3
SC-P6010 3 BillNo changes SC-P6010 3 条例草案无变化
SB-T1810 4 SB-T1810 4
How do I select the rows in the above manner?如何以上述方式选择行? Please answer
请回答
Thanks谢谢
You can do it like this你可以这样做
UPDATE tableA
SET BillNo='new value'
, ValueB=ValueB+1
WHERE BillNo='Old value';
You can use CTE to do that.您可以使用 CTE 来做到这一点。
WITH CTE (Col1, RowNumber)
AS
(
SELECT <YOUR_COLUMN_NAME_HERE> AS Col1, ROW_NUMBER() OVER (ORDER BY Col1) As RowNumber
FROM <YOUR_TABLE_NAME_HERE>
)
SELECT Col1,
(
SELECT COUNT(DISTINCT Col1)
FROM CTE InnerCTE
WHERE InnerCTE.RowNumber <= OuterCTE.RowNumber
) As NumberOfDistinctItemsInCol1
FROM CTE OuterCTE
Be sure to replace <YOUR_COLUMN_NAME_HERE> with your actual column name and <YOUR_TABLE_NAME_HERE> with your actual table name.请务必将 <YOUR_COLUMN_NAME_HERE> 替换为您的实际列名,将 <YOUR_TABLE_NAME_HERE> 替换为您的实际表名。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.