带有条件的SQL案例

时间:2009-05-15 19:43:40

标签: sql sql-server

我有一个查询设置,其中包含一个95%的时间工作的CASE语句...其他5%是由于数据不在那里。还有其他数据表明指针有助于......我只知道这是否可行......

所以: 案例PRDE.STATUSCODE当'A'那么'上诉'当''那么'被解雇'当'P'那么'等待'当''那么'满足'当'T'那么'定居'结束作为状态

有时字段是''但是可能会填充一个名为SATISFIEDDATE的文本字段...我可以在这里写一些内容:CASE''THEN [if SATISFIEDDATE<> ''然后'满意']

很抱歉,如果这很简单......:)

5 个答案:

答案 0 :(得分:2)

CASE
    WHEN PRDE.STATUSCODE='A' THEN 'Appealed'
    WHEN PRDE.STATUSCODE='D' THEN 'Dismissed'
    WHEN PRDE.STATUSCODE='P' THEN 'Pending'
    WHEN PRDE.STATUSCODE='S' OR (PRDE.STATUSCODE='' AND LEN(SatisfiedDate)>0) THEN 'Satisfied'
    WHEN PRDE.STATUSCODE='T' THEN 'Settled'
    ELSE '?null/unknown?'
END AS STATUS

答案 1 :(得分:1)

你可以有另一个CASE声明:

CASE '' THEN CASE WHEN SatisfiedDate != '' THEN 'Satisfied' END

另一种选择是:

CASE
    WHEN PRDE.STATUSCODE = 'A' THEN 'Appealed'
    WHEN PRDE.STATUSCODE = 'D' THEN 'Dismissed'
    WHEN PRDE.STATUSCODE = 'P' THEN 'Pending'
    WHEN PRDE.STATUSCODE = 'S'
       OR (PRDE.STATUSCODE = '' AND SatisfiedDate != '') THEN 'Satisfied'
    WHEN PRDE.STATUSCODE = 'T' THEN 'Settled'
END AS STATUS

答案 2 :(得分:0)

您可以使用ELSE

ELSE else_result_expression

在else_result_expression中,你可以放置你想要的任何法律表达,包括你写的内容。

http://www.databasejournal.com/features/mssql/article.php/3288921/T-SQL-Programming-Part-5---Using-the-CASE-Function.htm

答案 3 :(得分:0)

您可以在else子句或when子句

中执行嵌套的case语句
CASE PRDE.STATUSCODE 
    WHEN 'A' THEN 'Appealed' 
    WHEN 'D' THEN 'Dismissed' 
    WHEN 'P' THEN 'Pending' 
    WHEN 'S' THEN 'Satisfied' 
    WHEN 'T' THEN 'Settled' 
    else
        case 
            when SATISFIEDDATE is not null then 'Satisfied'
        end
END AS STATUS

答案 4 :(得分:0)

也许这就是你要找的东西:

CASE PRDE.STATUSCODE 
WHEN 'A' THEN 'Appealed' 
WHEN 'D' THEN 'Dismissed' 
WHEN 'P' THEN 'Pending' 
WHEN 'S' THEN 'Satisfied' 
WHEN 'T' THEN 'Settled' 
WHEN '' AND NULLIF(PRDE.SATISFIEDDATE, '') IS NOT NULL THEN 'Satisfied' END AS STATUS
相关问题