我有一个嵌套的DECODE
语句,我试图从Oracle重写为SQL Server,它让我适合。任何人都可以帮我改写这一行:
DECODE(UR.UR_REG_IND, 'P', 'P', 'Y') = DECODE(:UR_REG_IND, 'B', DECODE(UR.UR_REG_IND, 'P', 'P', 'Y'), :UR_REG_IND)
我理解:UR_REG_IND
是一个输入变量@UR_REG_IND
,我也理解DECODE
是SQL中的CASE
类型,但我遇到了各种各样的麻烦尝试在没有嵌套CASE
语句的情况下重写它,如果它甚至可能的话。
答案 0 :(得分:0)
这些方面的东西。不需要括号,但它们可能有助于提高可读性。
case ur.ur_reg_ind when 'P' then 'P' else 'Y' end =
case :ur_reg_ind when 'B' then (case ur.ur.reg_ind when 'P' then 'P' else 'Y' end)
else :ur_reg_ind end
请注意,这种翻译在Oracle本身应该同样有效 - 实际上我是如何编写这种条件的。或许它更长,但对我来说,阅读和理解(因此维护)似乎更容易。