0

プログラムでSQLを構築できないというレポートを作成しています。レポートに入力される 2 つの値があります。次の 3 つのオプションのいずれかになる値:

  1. 償還
  2. 購入
  3. 交換して購入する

クエリには WHERE 句が必要です。「redeem」が入力されている場合は、次のものが必要です。

... WHERE balance < 0

「購入」を入力する場合は、次のものが必要です。

... WHERE balance >= 0

両方が供給されている場合、この条件は完全に除外されるか、次のように言えます。

... WHERE balance >= 0 OR balance < 0 --> but this is redundant

この種のロジックを SQL に適用する方法はありますか? SQLでこのようなことは可能ですか:

SELECT * FROM account WHERE (if param1 = 'redeem' then 'balance <= 0)  ... etc

?

4

4 に答える 4

3

うん。あなたはほとんどそこにいます。

WHERE (param='redeem' and balance <=0) or (param='purchase' and balance>=0) or (param='redeem AND purchase ')
于 2013-05-30T12:56:18.590 に答える
1

CASEでステートメントを使用します。ここでWHERE例を見つけることができます。

MySQL で次のコードを試してみましたが、動作します。

SET @param = 'purchase';

SELECT * FROM TEST.ACCOUNT
WHERE CASE
    WHEN @param = 'redeem' THEN BALANCE < 0
    WHEN @param = 'purchase' THEN BALANCE >= 0
    ELSE TRUE
END;
于 2013-05-30T12:55:09.057 に答える
0

これでうまくいくでしょうか?

WHERE 
   (purchase is not null && balance >= 0)
OR
   (redeem is not null && balance < 0)
于 2013-05-30T12:54:46.073 に答える
0
CASE WHEN param1 = 'redeem' THEN balance <= 0
于 2013-05-30T12:56:37.590 に答える