【发布时间】:2020-05-14 18:36:35
【问题描述】:
我必须根据以下条件更新匹配标志列:
当 F_ZN=IC_ZN AND F_STN=IC_STN 然后 Matching Flag 将设置为 1 else 0 ,我可以想到这个,但我不知道确切的语法。
UPDATE F_STATE_MAPPING SET MATCHING_FLAG=CASE WHEN F_ZN=IC_ZN AND F_STN=IC_STN THEN 1 ELSE 0 END
FROM
(
SELECT F_ZN,F_STN,IC_ZN,IC_STN FROM
(
SELECT A.ZN_CD AS F_ZN,A.STN AS F_STN,B.ZN_CD AS IC_ZN,B.STN AS IC_STN FROM
F_STATE_MAPPING A,TEMP_STN_STATE_MAPPING B WHERE A.ZN_CD=B.ZN_CD AND A.STN=B.STN
)
)
F_STATE_MAPPING 表的架构是
ZN_CD VARCHAR2(4)
STN VARCHAR2(4)
MATCHING_FLAG NUMBER(1)
请指导。
【问题讨论】:
-
这是一个case 表达式,它返回一个值。
-
是的,所以 Matching_Flag 必须更新为 0 或 1 的值。
-
总是帮助提供创建表语句和插入语句作为问题的一部分。这确实有助于其他人回答您的问题。
-
样本数据和期望的结果会有所帮助,就像知道哪些列来自哪个表一样。