[英]Update Column if Null from previous values
我正在使用DB2 SQL。 我有一個表名ITEMATRIX,看起來像-
ITNBR LBRCST MFGOH STDUC YRMNT
RM-013 0 0 499.6 2010-02
H-178 0 0 164.5 2010-02
FP9-003 0 0 6 2010-02
FP9-059 0 0 2 2010-02
A94-103B-M 0 0 0 2010-02
140-07-1012C 0 0 10 2010-05
140-07-1012C 0 0 0 2010-06
然后
ITNBR LBRCST MFGOH STDUC YRMNT
140-07-1012C 0 0 10 2010-05
140-07-1012C 0 0 **10** 2010-06
等等等等
我想更新STDUC
字段,如果該值為0或Null表示當前最近的月份的值。 比方說,為ItNBR
140-07-1012C
的STDUC
是0
為2010-05
,那么首先我得找如果項目編號已在2010年任何一個月的標准成本,如果是再復制過去的一個月的價值這是2010-04
。 有許多記錄具有相同的項目編號,我稍后將對其進行轉置。 誰能給我一些解決方法的想法?
謝謝瓦倫
我認為他遵循的是您想要的邏輯:
update itematrix
set stduc = (select stduc
from itematrix im2
where im2.stduc <> 0 and im2.stduc is not null and im2.itnbr = itematrix.itnbr
order by yrmnt desc
fetch first 1 row only
)
where stduc is null or stduc = 0
我尚未在DB2中對此進行測試。 在與更新中使用的表相同的表上fetch first
使用fetch first
可能會出現問題。 我發現文檔不明確。
如果您不需要實際更新,而只想查看該值,請嘗試:
select itemmatrix.*,
(select stduc
from itematrix im2
where im2.stduc <> 0 and im2.stduc is not null and im2.itnbr = itematrix.itnbr
order by yrmnt desc
fetch first 1 row only
)
from itemmatrix
如果使用DB2 9.7,則可以使用LAG()函數: https : //www.ibm.com/developerworks/mydeveloperworks/blogs/dbtrue/entry/lag_lead_first_value_last_value_totally_new_in_db21? lang =en
我將流程轉移到EXCEL,並且可以從最早的月份開始對單個成本值使用IF
和VLOOKUP
輕松完成,然后簡單地比較上個月的值並進行相應的更改,然后使用&
創建UPDATE
語句。我將流程轉移到EXCEL並可以使用IF
和VLOOKUP
輕松實現,然后使用&
創建UPDATE
語句。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.