我有一个像这样的税收数据表
DECLARE @TaxSummary TABLE(
TaxRegionType SMALLINT NOT NULL,
ActualRegionTaxTotal NUMERIC(10,2) NULL,
LineRegionTaxTotal NUMERIC(10,2) NULL,
ExtendedRegionTaxTotal Numeric(14,6) NULL
)
而且我有一定数量的美分分配给该表中的每个区域类型......假设我有 5 额外的美分,所以我有
Declare @Cents int = 5
Declare @Delta = 0.01
目前我用这样的while循环更新表格
SET @Count = 0
WHILE (@Count < @Cents)
BEGIN
SET @Count = @Count + 1
UPDATE @TaxSummary
SET ActualRegionTaxTotal = ActualRegionTaxTotal + @Delta
WHERE TaxRegionType =
(SELECT TOP(1) TaxRegionType
FROM @TaxSummary
WHERE ExtendedRegionTaxTotal <> 0
ORDER BY ExtendedRegionTaxTotal-ActualRegionTaxTotal DESC)
END
有没有办法使用 CTE 来完成?还是非循环?基本上我想从差异最大的行开始为每一行添加一分,并继续添加到差异最大的行,直到使用所有额外的美分。