3

私はこの単純なクエリを実行しようとしていますが、構文解析すらしていません

メッセージ156、レベル15、状態1、行2キーワード「between」の近くの構文が正しくありません。

クエリは次のとおりです。

select  
    case DMProject.dbo.TypeFourTraining.Column2 
    when Column2 between 181 and 360 then '181-360' 
    when Column2 between 0 and 180 then '0-180' 
END as score 
from DMProject.dbo.TypeFourTraining 

同じことはColumn2 < 360構文にも機能しません。

msdnや他のいくつかのサイトからインターネットで検索しましたが、構文が有効であるように見えます。知っておく必要のある詳細があるか、見えないものがあります:(

誰かが解決策を提案できますか?

4

2 に答える 2

4

simplesearchedタイプのCASE式を混在させることはできません。DMProject.dbo.TypeFourTraining.Column2CASEの後に指定されたフィールド名を削除します。

クエリの正しい構文:

SELECT  CASE 
            WHEN Column2 between 181    AND 360 THEN '181-360' 
            WHEN Column2 between 0      AND 180 THEN '0-180' 
        END as score 
FROM    DMProject.dbo.TypeFourTraining 

2種類のCASE式:

CASE式には、との2種類がありSimpleますSearchedSimpleSearchedを同じ式で組み合わせることができません。

単純なケース:

CASE input
    WHEN 1 THEN 'a'
    WHEN 2 THEN 'b'
    WHEN 3 THEN 'c'
    ELSE ''
END

簡単な例でCASEを検索:

CASE 
    WHEN input = 1 THEN 'a'
    WHEN input = 2 THEN 'b'
    WHEN input = 3 THEN 'c'
    ELSE ''
END

少し複雑な例でCASEを検索しました:

これには複数の列が含まれます。各WHENステートメントに複数の列を追加できます。

CASE 
    WHEN input = 1 AND second_column = 2 THEN 'a'
    WHEN input = 2 AND third_column  = 3 THEN 'b'
    WHEN input = 3 AND (second_column = 4 OR third_column = 6) THEN 'c'
    ELSE ''
END
于 2012-05-05T18:34:52.737 に答える
3

2つの形式のcaseステートメントを混同しています。これを試して:

select (case when Column2 between 181 and 360 then '181-360' 
             when Column2 between 0 and 180 then '0-180' 
        END) as score 
from DMProject.dbo.TypeFourTraining 

もう1つの形式は、シングルトン値に使用されます。

select  case DMProject.dbo.TypeFourTraining.Column2 
            when 1 then '1' 
            when 2 then '2'
            etc. etc. etc. 
            END as score 
from DMProject.dbo.TypeFourTraining 
于 2012-05-05T18:34:09.200 に答える