SQL UPDATE 语句中的 case 表达式
SQL case expression in UPDATE statement
我正在尝试映射这个特定的 SQL 代码以用于数据仓库目的。
我有两列(TARGET)和(NET_SALARY),目的是当TARGET为700时将NET_SALARY映射为0,在其他情况下子串net salary 1, 30
我收到缺少右括号的错误
两列都是 varchar2 数据类型
CASE
WHEN SRC_CUSTOMER.TARGET = '700' THEN SRC_CUSTOMER.NET_SALARY = '0'
ELSE SUBSTR(SRC_CUSTOMER.NET_SALARY,1,30)
END
将赋值移动到case
关键字之前并将SRC_CUSTOMER.TARGET
作为内部表达式:
SRC_CUSTOMER.NET_SALARY =
CASE SRC_CUSTOMER.TARGET
WHEN '700' THEN '0'
ELSE SUBSTR(SRC_CUSTOMER.NET_SALARY,1,30)
END
可以改写为decode function:
SRC_CUSTOMER.NET_SALARY = decode(SRC_CUSTOMER.TARGET,'700','0',SUBSTR(SRC_CUSTOMER.NET_SALARY,1,30))
如果这是在 ODI mapping/interface 的上下文中,您只能使用 SQL 而不能使用 PL/SQL。您不能在第一个 THEN 中将值分配给 SRC_CUSTOMER.NET_SALARY。您实际上只需要设置您想要的值,它就会映射到您的目标属性。
试试
CASE
WHEN SRC_CUSTOMER.TARGET = '700' THEN '0'
ELSE SUBSTR(SRC_CUSTOMER.NET_SALARY,1,30)
END
我正在尝试映射这个特定的 SQL 代码以用于数据仓库目的。
我有两列(TARGET)和(NET_SALARY),目的是当TARGET为700时将NET_SALARY映射为0,在其他情况下子串net salary 1, 30
我收到缺少右括号的错误
两列都是 varchar2 数据类型
CASE
WHEN SRC_CUSTOMER.TARGET = '700' THEN SRC_CUSTOMER.NET_SALARY = '0'
ELSE SUBSTR(SRC_CUSTOMER.NET_SALARY,1,30)
END
将赋值移动到case
关键字之前并将SRC_CUSTOMER.TARGET
作为内部表达式:
SRC_CUSTOMER.NET_SALARY =
CASE SRC_CUSTOMER.TARGET
WHEN '700' THEN '0'
ELSE SUBSTR(SRC_CUSTOMER.NET_SALARY,1,30)
END
可以改写为decode function:
SRC_CUSTOMER.NET_SALARY = decode(SRC_CUSTOMER.TARGET,'700','0',SUBSTR(SRC_CUSTOMER.NET_SALARY,1,30))
如果这是在 ODI mapping/interface 的上下文中,您只能使用 SQL 而不能使用 PL/SQL。您不能在第一个 THEN 中将值分配给 SRC_CUSTOMER.NET_SALARY。您实际上只需要设置您想要的值,它就会映射到您的目标属性。
试试
CASE
WHEN SRC_CUSTOMER.TARGET = '700' THEN '0'
ELSE SUBSTR(SRC_CUSTOMER.NET_SALARY,1,30)
END