-1

SQL Server 2008 でステートメントのwhere一部にケースを追加したい。select

SELECT * 
FROM CR_LOAN_DTL 
WHERE 
    LOAN_ID = 1
    AND REFERENCE_NO = CASE 
                          WHEN @i_loan_id = 0 THEN >=1 
                          CASE WHEN  @i_loan_id = 0 THEN REFERENCE_NO  >=1 and REFERENCE_NO  <=9999999999999 
                               ELSE  REFERENCE_NO = @i_loan_id 
                          END 

それは私にエラーを与えています:

">" 付近の不適切な構文

どうすればこれを修正できますか?

4

1 に答える 1

2

あなたのCASEステートメントは の「ロジック」を返すことはできません>=1。解析する必要がある論理ステートメントではなく、値を返す必要があります。

オプションとして、次のことを行うことができます。

WHERE LOAN_ID=1 AND   
   ((@i_loan_id <> 0 AND REFERENCE_NO = @i_loan_id)
OR (@i_loan_id = 0 AND REFERENCE_NO BETWEEN 1 AND 9999999999999))
于 2012-12-10T07:57:18.827 に答える