我正在使用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 to value存在于最近的月份。让我们说ItNBR
140-07-1012C
STDUC
0
2010-05
为2010-04
,那么首先我必须找到该项目编号在2010年是否有标准费用对于任何月份,如果是,则将上个月的值{{1}}复制到其中。有许多记录具有相同的项目编号,我稍后会进行转置。谁能给我一些如何解决这个问题的想法?
由于 VARUN
答案 0 :(得分:0)
我认为他遵循的是你想要的逻辑:
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
可能会出现问题。我发现documentation含糊不清。
如果您不需要实际更新,但只想查看该值,请尝试:
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
答案 1 :(得分:0)
答案 2 :(得分:0)
我将流程转移到EXCEL,并且可以使用IF
和VLOOKUP
轻松地从最早的月份开始使用单个成本值,然后简单地比较上个月的值并相应地更改然后创建使用UPDATE
的{{1}}语句。我将流程转移到EXCEL,可以使用&
和IF
轻松完成,然后使用{{1}创建VLOOKUP
语句}。