Sql 不匹配的输入“不”应为同相输入

Sql 不匹配的输入“不”应为同相输入,sql,dql,Sql,Dql,我在下面的查询中遇到错误。有人能建议吗 select Defects_1.id, case when Defects_1.status Not Like '4-Closed%' then (CURRENTDATE() - Defects_1.creation_time) As Defect_Age end case when Defects_1.status Like '4-Closed%' then Defects_1.user_11as Defect_Age end from Defects

我在下面的查询中遇到错误。有人能建议吗

select Defects_1.id,
case when Defects_1.status Not Like '4-Closed%' then (CURRENTDATE() - Defects_1.creation_time) As Defect_Age end
case when Defects_1.status Like '4-Closed%' then Defects_1.user_11as Defect_Age end
from Defects_1
Order By Defects_1.id
错误:

不匹配的输入“不”应为第2行的同相分析器, 第27列用于查询


我假设你有一些专栏,比如缺陷1.结束时间,这就是你想要的-

select      Defects_1.id

           ,    case 
                    when Defects_1.status Not Like '4-Closed%' 
                    then CURRENTDATE()
                    else Defects_1.closing_time
                end 
            -   Defects_1.creation_time   As Defect_Age 

           ,case 

from        Defects_1

Order By    Defects_1.id

我假设你有一些专栏,比如缺陷1.结束时间,这就是你想要的-

select      Defects_1.id

           ,    case 
                    when Defects_1.status Not Like '4-Closed%' 
                    then CURRENTDATE()
                    else Defects_1.closing_time
                end 
            -   Defects_1.creation_time   As Defect_Age 

           ,case 

from        Defects_1

Order By    Defects_1.id

我认为你打算提出一个单一的案例陈述:

select Defects_1.id,
       (case when Defects_1.status Not Like '4-Closed%'
             then (CURRENTDATE() - Defects_1.creation_time)
             when Defects_1.status Like '4-Closed%'
             then Defects_1.user_11
         end) as Defect_Age
from Defects_1
Order By Defects_1.id

我认为你打算提出一个单一的案例陈述:

select Defects_1.id,
       (case when Defects_1.status Not Like '4-Closed%'
             then (CURRENTDATE() - Defects_1.creation_time)
             when Defects_1.status Like '4-Closed%'
             then Defects_1.user_11
         end) as Defect_Age
from Defects_1
Order By Defects_1.id

如果这类似于MSSQL,那么您需要将字段别名放在案例之外..WHEN..then..END语句:缺陷时案例\u 1.状态与'4-Closed%'不同,然后CURRENTDATE-缺陷\u 1.创建\u时间结束为缺陷\u年龄,缺陷时案例\u 1.状态与'4-Closed%'相同,然后缺陷\u 1.用户\u 11结束为缺陷\u年龄。在第三行的Defect_1.user_11和as Defect_Age之间也没有空格,这可能也是一个问题。如果这与MSSQL类似,然后您需要将字段别名放在案例之外..WHEN..then..END语句:CASE WHEN Defects\u 1.状态不象'4-Closed%'然后CURRENTDATE-Defects\u 1.创建\u时间结束为Defect\u Age,CASE WHEN Defects\u 1.状态象'4-Closed%'然后Defects\u 1.用户\u 11结束为Defect\u Age。第三行的Defects_1.user_11和as Defect_Age之间也没有空格,这可能也是个问题。我最初的查询是在DQL中。我将其转换为SQL,但现在我发现ORA-00936缺少表达式错误。SQL查询是选择BUG.BG_BUG_ID,当BUG.BG_状态不象'4-Closed%'时为case,然后是DATE-BUG.BG_DETECTION_日期当BUG.BG_状态象'4-Closed%'时为DATE,然后BUG.BG_用户_11按BUG.BG_BUG_ID按BUG.BG_顺序作为缺陷终止如果您正在使用Oracle,也许您打算使用CURRENT_DATE或sysdate而不是CURRENTDATE。我最初的查询是在DQL中。我将其转换为SQL,但现在我发现ORA-00936缺少表达式错误。SQL查询是选择BUG.BG_BUG_ID,当BUG.BG_状态不象'4-Closed%'时为case,然后是DATE-BUG.BG_DETECTION_日期当BUG.BG_状态象'4-Closed%'时为DATE,然后BUG.BG_用户_11按BUG.BG_BUG_ID按BUG.BG_顺序作为缺陷终止如果您正在使用Oracle,也许您打算使用当前日期或系统日期而不是当前日期。