0

SQL Serverに次の行があります

((@data_inicial IS NULL OR @data_inicial = '') 
OR 
tbSO.dt_criacao >= CAST(@data_inicial AS DATE))

@cod_status を受け取る 1 つのパラメーターに応じて、フィールド tbSO.dt_criacao を使用する必要があります。

@cod_status = 1 の場合、tbSO.dt_criacao を使用する必要があります
@cod_status = 2 の場合、tbSO.dt_abertura を使用する必要があります
@cod_status = 3 の場合、tbSO.dt_fechamento を使用する必要があります

この問題で私を助けてもらえますか?

よろしくお願いします

ミルトン・カマラ

4

3 に答える 3

2

以下のような CASE ステートメントはあなたのニーズを満たしませんか? then ステートメントで変数を設定することができます。

CASE @cod_status 
 When 1 then tbSO.dt_criacao 
 When 2 Then tbSO.dt_abertura 
 When 3 Then tbSO.dt_fechamento 
END
于 2012-11-06T17:07:32.990 に答える
1

CASE ステートメントは、条件を Query に入れる獣の方法です。Case ステートメントを使用して、他の列または条件に依存する新しい列を計算できます。また、SUM、AVG、count などの関数で case ステートメントを使用できます。case ステートメントを where 条件に入れることもできます。

次の構文を使用できます..

SELECT *
FROM TABLE
WHERE
1 = CASE 
        WHEN (
               (@data_inicial IS NULL OR @data_inicial = '') 
               OR 
               (
               CASE @cod_status 
                    When 1 then tbSO.dt_criacao 
                    When 2 Then tbSO.dt_abertura 
                    When 3 Then tbSO.dt_fechamento 
               END >= CAST(@data_inicial AS DATE)
               )
             ) THEN 1 ELSE 0 
    END
于 2012-11-06T20:29:15.490 に答える
1

お役に立てれば

((@data_inicial IS NULL OR @data_inicial = '') 
OR 
(@cod_status = 1 and tbSO.dt_criacao >= CAST(@data_inicial AS DATE))
OR 
(@cod_status = 2 and tbSO.dt_abertura  >= CAST(@data_inicial AS DATE))
OR 
(@cod_status = 3 and tbSO.dt_fechamento >= CAST(@data_inicial AS DATE))

よろしく

于 2012-11-06T17:26:07.567 に答える