1

SQL CASE 句に and ステートメントを含めることは可能ですか? もしそうなら、あなたはそれをどのように書きますか?

つまり、次のようなものですか?:

CASE
    When ((Column < 1) AND (Column2 > 0)) THEN column4 + 1
END as Column

私のコードは実行されますが、私が望むものを達成しません(負の数はありません):

CASE
WHEN (((Clean_Total_Time - ActivityTimeTotalMin) < 0) AND (ActivityTimeTotalMin > 0))     
THEN (ABS(DATEDIFF(hh,Total_Time,ActivityTotalTime))-1)
END as hours

私のコードは機能し、本来あるべきことを達成しますが、負の数が許可されているため、必要ありません:

CASE
WHEN (Clean_Total_Time - ActivityTimeTotalMin) < 0
THEN (ABS(DATEDIFF(hh,Total_Time,ActivityTotalTime))-1)
END as hours

編集: この計算の目的は次のとおりです。

2 つの列を減算し、結果が負の場合は、それらの 2 つの列のいずれかから数値 1 を減算します。さらに、私の AND セクションは、その列の値が 0 の場合、列から 1 を減算しないことを示していました。その列にゼロ未満の数値を入れたくありません。

発生していない唯一のことは、列がゼロに等しい場合にキャッチされないことです。そのため、もともと 0 だったときは常にマイナス 1 になっています。

4

1 に答える 1

2

このMSDNの記事によると、次のとおりです。

SELECT ProductNumber, Name, "Price Range" = 
      CASE 
         ...
         WHEN ListPrice >= 50 and ListPrice < 250 THEN 'Under $250'
         WHEN ListPrice >= 250 and ListPrice < 1000 THEN 'Under $1000'
         ELSE 'Over $1000'
      END
FROM Production.Product

括弧は必要ないと思います。

更新 1

次のようにCASE内部で使用してみることができます:CASE

CASE
    WHEN Column < 1
        CASE
            WHEN Column2 > 0 THEN column4 + 1
        END
END AS Column
于 2012-09-04T20:32:22.260 に答える