次のように動作する条件付き where 句が必要です。
Select *
From Table
If (@booleanResult)
Begin
Where Column1 = 'value1'
End
Else
Begin
Where column1 = 'value1' and column2 = 'value2'
End
どんな助けでも大歓迎です。
次のように動作する条件付き where 句が必要です。
Select *
From Table
If (@booleanResult)
Begin
Where Column1 = 'value1'
End
Else
Begin
Where column1 = 'value1' and column2 = 'value2'
End
どんな助けでも大歓迎です。
次のことをしていただけませんか?
SELECT
*
FROM
Table
WHERE
(@booleanResult = 1
AND Column1 = 'value1')
OR
(@booleanResult = 0
AND Column1 = 'value1'
AND Column2 = 'value2')
WHERE
句で条件を簡単にグループ化できます。
WHERE
(@BooleanResult=1 AND Column1 = 'value1')
OR
(@BooleanResult=0 AND Column1 = 'value1' AND column2 = 'value2')
問題のスクリプトに基づくとColumn1
、変数@booleanResult
がtrueまたはfalseに設定されているかどうかに関係なく、の条件が必要なようです。したがって、その条件を句に追加しWHERE
、残りの条件で変数が1(true)に設定されているかどうか、または0(false)に設定されている場合は、の条件もチェックしColumn2
ます。
これは、これを達成するためのもう1つの方法です。
CREATE TABLE MyTable
(
Column1 VARCHAR(20) NOT NULL
, Column2 VARCHAR(20) NOT NULL
);
INSERT INTO MyTable (Column1, Column2) VALUES
('value1', ''),
('', 'value2'),
('value1', 'value2');
DECLARE @booleanResult BIT
SET @booleanResult = 1
SELECT *
FROM MyTable
WHERE Column1 = 'value1'
AND ( @booleanResult = 1
OR (@booleanResult = 0 AND Column2 = 'value2')
);
出力:
COLUMN1 COLUMN2
------- -------
value1
value1 value2
DECLARE @booleanResult BIT
SET @booleanResult = 0
SELECT *
FROM MyTable
WHERE Column1 = 'value1'
AND ( @booleanResult = 1
OR (@booleanResult = 0 AND Column2 = 'value2')
);
出力:
COLUMN1 COLUMN2
------- -------
value1 value2
より短い答えを提供するには:
Select *
From Table
Where Column1 = 'value1' and
coalesce(column2, '') = (case when @BooleanResults = 0
then 'value1'
else coalesce( column2, '')
end)