2017-06-08 33 views
2

当WHEN子句中没有“>”符号时,此查询运行正常,但当ProposalDate比“2017-04”更晚时,我需要此功能-10:00:00:00.000'。不知道为什么当我将WHERE子句添加到>时出现语法错误。CASE在WHEN子句中使用>>时出现语法错误

SELECT *, 
    CASE ProposalDate WHEN > '2017-04-10 00:00:00.000' 
     THEN (OrderTotal - ProposalWholesalePrice) + 
      (ProposalWholesalePrice * 1.02) 
     ELSE OrderTotal  
    END "New_OrderTotal" 
FROM webservices.dbo.DT_Open_Orders_Baseprice 
WHERE ProposalSerialNumber = '639036' 
+1

'情况下,当X> Y then'或'案件x y的then'。 –

+0

你正在使用哪个数据库? –

回答

2

SQL CASEhas two forms表达:

  • 简单CASE表达,和
  • 搜索到的CASE表达。

简单CASE,即CASE ProposalDate WHEN ...不能与比较运算符一起使用;你需要搜索CASE,而不是:

SELECT 
    * 
, CASE 
     WHEN ProposalDate > '2017-04-10 00:00:00.000' 
     THEN (OrderTotal - ProposalWholesalePrice) + (ProposalWholesalePrice * 1.02) 
     ELSE OrderTotal 
    END "New_OrderTotal" 
FROM webservices.dbo.DT_Open_Orders_Baseprice 
WHERE ProposalSerialNumber = '639036' 
0

你有没有试过把“WHEN”放在列名之前? 例如:

SELECT *, CASE WHEN ProposalDate > '2017-04-10 00:00:00.000' 

THEN (OrderTotal - ProposalWholesalePrice) + (ProposalWholesalePrice * 1.02) ELSE OrderTotal 

END "New_OrderTotal" FROM webservices.dbo.DT_Open_Orders_Baseprice WHERE ProposalSerialNumber = '639036' 
0

速记case语法不使用任何运算符,只是一系列值,其与=条件进行评价。如果你想使用其他运营商,你必须使用完整的case语法:

SELECT *, 
     CASE WHEN ProposalDate > '2017-04-10 00:00:00.000' 
      THEN (OrderTotal - ProposalWholesalePrice) + 
       (ProposalWholesalePrice * 1.02) 
      ELSE OrderTotal 
     END "New_OrderTotal" 
FROM webservices.dbo.DT_Open_Orders_Baseprice 
WHERE ProposalSerialNumber = '639036' 
相关问题