簡體   English   中英

如果以前的值為空,則更新列

[英]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-1012CSTDUC02010-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

我將流程轉移到EXCEL,並且可以從最早的月份開始對單個成本值使用IFVLOOKUP輕松完成,然后簡單地比較上個月的值並進行相應的更改,然后使用&創建UPDATE語句。我將流程轉移到EXCEL並可以使用IFVLOOKUP輕松實現,然后使用&創建UPDATE語句。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM