条件に基づいて検索を実行する必要があります。私は@SearchConditionを渡した場合= 1、私は@SearchCondition = 0を渡した場合、検索は、渡された@SearchValueため受注コード列に対して実行されなければならないすべてのレコードマイナス 条件文中の条件を使用したSQL検索
IF @SearchCondition = 1
Search Records With [OrderId] = @SearchValue
IF @SearchCondition = 0
Get All The Records With [OrderId] <> @SearchValue
しかし@SearchValue
でレコードを返す必要があります検索1つのステートメント(理想的にはCASE
ステートメント)で行う必要があります。いいえ
IF-ELSE
クエリは大きすぎるので、私は同じ長いクエリを2回書くのではなく、1つの異なる行だけを書いています。ここでは便宜のためのサンプルテーブルには、次のとおりです。
DECLARE @SearchCondition INT = 0, @SearchValue INT = 121
CREATE TABLE #TempData
(
[Id] INT IDENTITY(1,1),
[OrderId] INT,
[OrderName] VARCHAR(20)
)
INSERT INTO #TempData
SELECT 121, 'A1' UNION
SELECT 122, 'A2' UNION
SELECT 123, 'A3' UNION
SELECT 124, 'A4' UNION
SELECT 125, 'A5' UNION
SELECT 126, 'A6' UNION
SELECT 127, 'A7' UNION
SELECT 128, 'A8' UNION
SELECT 129, 'A9' UNION
SELECT 130, 'A10'
--If SearchCondition = 1
SELECT [Id], [OrderId], [OrderName]
FROM #TempData
WHERE [OrderId] = @SearchValue--If SearchCondition = 1
-- Handle If SearchCondition = 0
--SELECT [Id], [OrderId], [OrderName]
--FROM #TempData
--WHERE [OrderId] <> @SearchValue
DROP TABLE #TempData
は、上記の文をマージする必要があり、単一のステートメントで
使用および/または代わりにcase式の:一つの方法は、
AND-OR
組み合わせその他の情報を使用することです。 – jarlh
動的クエリ – Lucky