13

私は SQL Server 2008 で作業しており、コードのセクションでIF, ELIF, ELSEステートメントを使用しようとしています。SELECT私がやりたいことは次のとおりです。

IF BO.VALUE < BO.REFERENCELOWERLIMIT
    THEN (BO.VALUE - BO.REFERENCELOWERLIMIT) #I WANT THIS TO BE NEGATIVE
ELSE IF BO.REFERENCELOWERLIMIT <= BO.VALUE <= BO.REFERENCEUPPERLIMIT
    THEN BO.VALUE
ELSE
    (BO.REFERENCEUPPERLIMIT - BO.VALUE)

問題は、SQL で IF、ELIF、ELSE タイプのトランザクションを行う方法を理解していないことです。このタイプの例を検索しようとしたところ、Python の例に出くわしました...間違った言語だったので、MSDBN サイトで検索を行ったところ、この種の作業は見られず、IF/ELSE だけでした。

ありがとうございました

4

2 に答える 2

20

CASE表現 が欲しい。CASE順番に評価され、最初の一致がクエリで返されます。

SELECT
  CASE WHEN BO.VALUE < BO.REFERENCELOWERLIMIT 
           THEN (BO.VALUE - BO.REFERENCELOWERLIMIT)
       WHEN BO.VALUE BETWEEN BO.REFERENCELOWERLIMIT AND BO.REFERENCEUPPERLIMIT
           THEN BO.VALUE
       ELSE  (BO.REFERENCEUPPERLIMIT - BO.VALUE)
  END as MyColumnAlias
...
于 2013-03-28T14:09:00.840 に答える
5
SELECT 
    col = CASE 
            WHEN BO.VALUE < BO.REFERENCELOWERLIMIT 
                THEN BO.VALUE - BO.REFERENCELOWERLIMIT
            WHEN BO.VALUE BETWEEN BO.REFERENCELOWERLIMIT AND BO.REFERENCEUPPERLIMIT 
                THEN BO.VALUE
            ELSE BO.REFERENCEUPPERLIMIT - BO.VALUE
FROM tbl
于 2013-03-28T14:11:30.273 に答える