-1

これが SQL Server の私の弱点だと言うのは恥ずかしいことです。このコードを適切に機能させる方法がわかりません。これは、いくつかの異なるコードを 1 つにまとめたものです。

SUM(CASE WHEN RRDD Not Like '12%' AND RRDD Not Like '13%' AND RRDD Not Like '16%' AND RRDD
Not Like '17%' AND RRDD Not Like '2706%' AND RRDD Not Like '2707%' AND RRDD Not Like '2331%'
THEN CAST([2011 Total] AS FLOAT)*CASE WHEN IsNumeric [DUR_In_Hours] = 1 THEN
CAST([DUR_IN_Hours] AS FLOAT) ELSE 0 END) AS SP_DOM_COST

私が得ているエラーは次のとおりです。

IsNumeric is not recognized and incorrect syntax near DUR_In_Hours

4

1 に答える 1

2

かっこがありませんIsNumeric()

 WHEN IsNumeric([DUR_In_Hours]) = 1 

ENDあなたはまたあなたの最初のを逃していますCASE

SUM(CASE 
        WHEN RRDD Not Like '12%' 
            AND RRDD Not Like '13%' 
            AND  RRDD Not Like '16%' 
            AND RRDD Not Like '17%' 
            AND RRDD Not Like '2706%' 
            AND RRDD Not Like '2707%' 
            AND RRDD Not Like '2331%' 
        THEN CAST([2011 Total] AS FLOAT)
        ELSE 0
        END
    *
    CASE 
        WHEN IsNumeric([DUR_In_Hours]) = 1 
        THEN CAST([DUR_IN_Hours] AS FLOAT) 
        ELSE 0 
        END) AS SP_DOM_COST

最後の提案ですが、フィールドのデータ型によっては、構文RRDDを使用する必要がない場合があります。あなたはそれを:LIKEに置き換えることができるかもしれませんNOT IN

SUM(CASE 
        WHEN RRDD NOT IN ('12', '13', '16', '17', '2706', '2707', '2331')
        THEN CAST([2011 Total] AS FLOAT)
        ELSE 0
        END
    * 
     CASE 
        WHEN IsNumeric([DUR_In_Hours]) = 1 
        THEN CAST([DUR_IN_Hours] AS FLOAT) 
        ELSE 0 
        END) AS SP_DOM_COST

SQL FiddlewithDemoを参照してください

于 2013-01-22T18:25:49.720 に答える