DECODE语句到SQL

时间:2017-01-30 20:33:04

标签: sql sql-server tsql

我有一个嵌套的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语句的情况下重写它,如果它甚至可能的话。

1 个答案:

答案 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本身应该同样有效 - 实际上我是如何编写这种条件的。或许它更长,但对我来说,阅读和理解(因此维护)似乎更容易。