繁体   English   中英

仅当另一列的值更改 sql server 时才自动增加值

[英]Auto-increment the value only when the value of another column changes sql server

假设我有这个(SQL 服务器)数据库,按值 A 排序,只有当值 A 发生变化时,值 B 才应增加:

BillNo 值 B
SC-P1100 1
SC-P1100 1 票据无变化
SC-blb00 2 法案无变化
SC-P6010 3
SC-P6010 3
SC-P6010 3 条例草案无变化
SB-T1810 4

如何以上述方式选择行? 请回答

谢谢

你可以这样做

UPDATE tableA   
  SET BillNo='new value'
  , ValueB=ValueB+1
  WHERE BillNo='Old value';

您可以使用 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

请务必将 <YOUR_COLUMN_NAME_HERE> 替换为您的实际列名,将 <YOUR_TABLE_NAME_HERE> 替换为您的实际表名。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM