在Sql Server中组合单个语句中的多个条件

swe*_*tha 11 sql-server sql-server-2005

根据以下描述我必须CASE...END在SQL服务器中构建一个语句,帮助我构造一个复杂的CASE...END语句来满足以下条件.

if PAT_ENT.SCR_DT is not null and PAT_ENTRY.ELIGIBILITY is null then display display 'Favor'
if PAT_ENT.SCR_DT is not null and PAT_ENTRY.EL is equal to No, display 'Error'
if PAT_ENTRY.EL is Yes and DS.DES is equal to null or OFF, display 'Active'
if DS.DES is equal to N, display 'Early Term'
if DS.DES is equal to Y, display 'Complete'
Run Code Online (Sandbox Code Playgroud)

提前致谢.

Dea*_*ing 35

您可以将条件放在WHEN子句之后,如下所示:

SELECT
  CASE
    WHEN PAT_ENT.SCR_DT is not null and PAT_ENTRY.ELIGIBILITY is null THEN 'Favor'
    WHEN PAT_ENT.SCR_DT is not null and PAT_ENTRY.EL = 'No' THEN 'Error'
    WHEN PAT_ENTRY.EL = 'Yes' and ISNULL(DS.DES, 'OFF') = 'OFF' THEN 'Active'
    WHEN DS.DES = 'N' THEN 'Early Term'
    WHEN DS.DES = 'Y' THEN 'Complete'
  END
FROM
  ....
Run Code Online (Sandbox Code Playgroud)

当然,可以说这样的复杂规则属于您的业务逻辑层,而不是数据库中的存储过程......