假设我有这个(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
如何以上述方式选择行?请回答
由于
答案 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;用你的实际表名。