仅当另一列的值更改sql server时自动递增该值

时间:2014-09-09 06:27:41

标签: sql sql-server-2008

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

BillNo价值B
SC-P1100 1
SC-P1100 1 BillNo更改
SC-blb00 2 BillNo更改
SC-P6010 3
SC-P6010 3
SC-P6010 3 BillNo更改
SB-T1810 4

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

由于

2 个答案:

答案 0 :(得分:0)

你可以这样做

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

答案 1 :(得分:0)

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

请务必替换&lt; YOUR_COLUMN_NAME_HERE&gt;使用您的实际列名和&lt; YOUR_TABLE_NAME_HERE&gt;用你的实际表名。