Sql查询在CASE条件中为伪列提供错误

Sql查询在CASE条件中为伪列提供错误,sql,oracle,Sql,Oracle,我有一个小查询,它有case和按条件case生成一个伪col,但它的给出错误 Select Ad_Date, CASE WHEN Ad_DATE is null AND TRAN_DATE is null and Join_Date is not null THEN 'Approve-Pending' AS Status WHEN Ad_DATE is null AND TRAN_DATE is null and Join_Date is null THEN 'Decline'

我有一个小查询,它有case和按条件case生成一个伪col,但它的给出错误

    Select Ad_Date,
    CASE 
WHEN Ad_DATE is null AND TRAN_DATE is null and Join_Date is not null THEN 'Approve-Pending' AS Status
WHEN Ad_DATE is null AND TRAN_DATE is null and Join_Date is null THEN 'Decline' AS Status
 from table1

这里给出的错误是“缺少关键字”,而前面的错误作为关键字返回一个值。可以为该值指定一个列别名,但该别名位于表达式末尾之后<代码>大小写表达式以
结束
结尾

所以,这看起来像:

Select Ad_Date,
       (case when Ad_DATE is null and TRAN_DATE is null and Join_Date is not null 
             then 'Approve-Pending'
             when Ad_DATE is null and TRAN_DATE is null and Join_Date is null 
             then 'Decline'
        end) as Status
from table1;

请注意,此
大小写
表达式没有
ELSE
。因此,任何与这两个条件不匹配的行的status值都将为
NULL

a
case
表达式返回一个值。可以为该值指定一个列别名,但该别名位于表达式末尾之后<代码>大小写表达式以
结束
结尾

所以,这看起来像:

Select Ad_Date,
       (case when Ad_DATE is null and TRAN_DATE is null and Join_Date is not null 
             then 'Approve-Pending'
             when Ad_DATE is null and TRAN_DATE is null and Join_Date is null 
             then 'Decline'
        end) as Status
from table1;

请注意,此
大小写
表达式没有
ELSE
。因此,任何与这两个条件不匹配的行的status值都将为
NULL

结束为status
@jarlh如果我有两个WHEN条件,那么在这种情况下,在哪里结束?@jarlh我刚刚更新了查询,我有两个When条件。请帮我做同样的事情。你需要删除第一个
作为状态
,并将第二个替换为
作为状态结束
作为状态结束
@jarlh如果我有两个When条件,那么在这种情况下,在哪里结束?@jarlh我刚刚更新了查询,我有两个When条件。请帮我解决同样的问题。您需要将第一个
作为Status
删除,并将第二个替换为
END AS Status
。如果我使用管道将输出作为pip separated,那么sql查询就像case给出错误一样,你知道这件事吗?选择“'.| | Ad| U Date | |',”(当Ad|U Date为空且交易日期为空且加入日期不为空时,则为“批准待决”;当Ad|U Date为空且交易日期为空且加入日期为空时,则为“拒绝”结束)作为状态|“,“'来自表1@维姆。这回答了您在这里提出的问题。如果你还有一个问题,把它当作一个问题而不是评论来问。我无法阅读注释中的代码。我将在我的问题中更新它。@vim。这使我的回答无效,这是不礼貌的,因为它可能会吸引反对票。你们应该问一个新问题。若我使用管道将输出作为pip separated,那个么sql查询就像case给出错误一样,你们对此有什么想法吗?选择“'.| | Ad| U Date | |',”(当Ad|U Date为空且交易日期为空且加入日期不为空时,则为“批准待决”;当Ad|U Date为空且交易日期为空且加入日期为空时,则为“拒绝”结束)作为状态|“,“'来自表1@维姆。这回答了您在这里提出的问题。如果你还有一个问题,把它当作一个问题而不是评论来问。我无法阅读注释中的代码。我将在我的问题中更新它。@vim。这使我的回答无效,这是不礼貌的,因为它可能会吸引反对票。你应该问一个新问题。