在一个PHP脚本中,我正在运行一个有效的合并,但是我需要向它添加日期条件,而我的更新导致它不再起作用。
我要寻找的逻辑是:
匹配一直在进行,但我基本上想忽略已过期的匹配。我在这里做什么错了?
这在db2中针对iseries运行
MERGE INTO products AS P
USING ( VALUES (
CAST(:CUSTOMER AS INT),
CAST(:SLSCODE AS INT),
CAST(:DTL1 AS INT),
CAST(:DTL2 AS INT),
CAST(:DTL3 AS INT),
CAST(:COUNT AS INT),
CAST(:LAST_DATE AS DATE),
CAST(:FLAG AS SMALLINT),
CAST(:ORDER AS INT),
CAST(:PIECES AS VARCHAR(45))
)
)
AS S(CUSTOMER,REGION,DTL1,DTL2,DTL3,COUNT,LAST_DATE,FLAG,ORDER,PIECES)
ON s.CUSTOMER = p.CUSTOMER and s.REGION = p.REGION and s.DTL1 = p.DTL1 and s.DTL2 = p.DTL2 and s.DTL3 = p.DTL3 and s.COUNT = p.COUNT and s.LAST_DATE = p.LAST_DATE and s.FLAG = p.FLAG and s.ORDER = p.ORDER AND s.PIECES = p.PIECES
WHEN MATCHED AND p.expire_date > current_date
THEN UPDATE SET last_date = s.last_date, order = s.order, pieces = s.pieces, expire_date = s.expire_date
WHEN MATCHED AND p.expire_date < current_date
THEN INSERT VALUES (s.customer,s.region, s.dtl1, s.dtl2, s.dtl3, s.count, s.last_date, s.flag, s.order, s.pieces, s.expire_date)
WHEN NOT MATCHED
THEN INSERT VALUES (s.customer,s.region, s.dtl1, s.dtl2, s.dtl3, s.count, s.last_date, s.flag, s.order, s.pieces, s.expire_date)