Sql server 存储过程选择更新不正确的值

Sql server 存储过程选择更新不正确的值,sql-server,stored-procedures,Sql Server,Stored Procedures,我正在创建一个存储过程,打算每24小时通过作业运行一次。我能够成功运行过程查询,但由于某些原因,这些值似乎没有意义。见下文 这是我的表,它在运行过程之前的样子,使用以下语句: SELECT HardwareAssetDailyAccumulatedDepreciationValue, HardwareAssetAccumulatedDepreciationValue FROM HardwareAsset 然后,我运行以下过程,主要是将DailyDecillationValue中的值复制到Dec

我正在创建一个存储过程,打算每24小时通过作业运行一次。我能够成功运行过程查询,但由于某些原因,这些值似乎没有意义。见下文

这是我的表,它在运行过程之前的样子,使用以下语句:

SELECT HardwareAssetDailyAccumulatedDepreciationValue,
HardwareAssetAccumulatedDepreciationValue FROM HardwareAsset
然后,我运行以下过程,主要是将DailyDecillationValue中的值复制到DecillationValue:

BEGIN

SELECT HardwareAssetID, HardwareAssetDailyAccumulatedDepreciationValue,
HardwareAssetAccumulatedDepreciationValue FROM HardwareAsset
WHERE HardwareAssetDailyAccumulatedDepreciationValue IS NOT NULL

UPDATE HardwareAsset SET HardwareAssetAccumulatedDepreciationValue = CASE WHEN
(HardwareAssetAccumulatedDepreciationValue IS NULL) THEN
CONVERT(DECIMAL(7,2),HardwareAssetDailyAccumulatedDepreciationValue) ELSE
CONVERT(DECIMAL(7,2),(HardwareAssetAccumulatedDepreciationValue + HardwareAssetDailyAccumulatedDepreciationValue))
END

END
但当我重新运行select语句时,结果如下所示:


这对我来说真的毫无意义任何想法?

我无法复制。我们需要更多关于表结构和数据的细节。这就是我过去试图复制的东西。请根据需要随意修改:

create table #t (
      AccD1 decimal(7,2)
    , AccD2 decimal(7,2)
    , AccDaily as AccD1 + AccD2
    , AccTotal decimal(7,2)
)

insert #t values 
      (100, 7.87,  null)
    , (300, 36.99, null)
    , (400, 49.32, null)
    , (100, 50.00, 100)

select * from #t

update #t set 
      AccTotal = isnull(AccTotal, 0) + AccDaily
    , AccD1 = 0
    , AccD2 = 0

select * from #t

drop table #t

设置AccTotal=ISNULLAccTotal,0+AccDaily@Malk,我试一试,结果相同。列上的数据类型是什么?你能提供表结构和示例数据吗?@Malk,数据类型都是小数7,2,Daily列是计算列,我想我已经弄清楚了为什么后两个会发生变化,这是因为计算列SELECT导致的问题。计算列在其计算中使用静态列。我知道这听起来非常糟糕的编程,但在确定计算时它是有意义的。我认为我遇到的问题是,在更新过程中,我选择了更改值的计算列。我想我需要声明一个临时值,每天存储在那里。然后用temp值更新static列。右上角。那会让你走的。祝你好运