sql-server - 在Sql Server中的单例语句中组合多个条件

标签 sql-server sql-server-2005

根据以下描述,我必须在 SQL Server 中构建一个 CASE...END 语句,请帮助我构建一个复杂的 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'

提前致谢。

最佳答案

您可以将条件放在 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
  ....

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

关于sql-server - 在Sql Server中的单例语句中组合多个条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3043154/

相关文章:

sql - SQL变量数据类型和表列数据类型之间的区别

sql-server - 在 SQL 表中存储表情符号

sql-server-2005 - SQL 服务器 2005 : disk space taken by dropped columns

xml - SQL Server XmlType 不保留 CDATA 元素

SQL Pivot 基于两列之间的值

sql - MSSQL 2005 查询组日期 - 甚至没有记录的日期?

sql - 更改 SQL 的根密码

javascript - 父查询中每一行的子查询 - Node.js 和 node-mssql

SQL Server 日期时间操作

c# - 使用 Microsoft.SqlServer.SMO 创建一个 Alter Stored Procedure sql 脚本?