2017-06-08 14 views
2

WHEN句に ">"記号がない場合、このクエリは正常に動作しますが、ProposalDateが '2017-04以降の日付-10 00:00:00.000 'となる。 WHEN句に>を追加すると、なぜ構文エラーが表示されるのか分かりません。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':あなたが他の演算子を使用する場合は、完全なcase構文を使用する必要があります。 –

+0

どのデータベースを使用していますか? –

答えて

2

SQL CASE表現has 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構文は、任意の演算子、=条件で評価された値のちょうどシリーズを使用していません。

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' 
関連する問題