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