0

ここにテーブルとデータがあります

CREATE TABLE #Customers
(
    ID              INT NOT NULL,
    ProductID       INT NOT NULL,
    OrderID         INT NULL
)

INSERT INTO #Customers VALUES (1,10,1)
INSERT INTO #Customers VALUES (2,10,NULL)
INSERT INTO #Customers VALUES (3,10,5)
INSERT INTO #Customers VALUES (4,20,NULL)
INSERT INTO #Customers VALUES (5,20,NULL)
INSERT INTO #Customers VALUES (6,20,22)
GO

結果の決定がパラメータ @OrderID に基づくストアド プロシージャがあります。@OrderID が null でない場合、このパラメーターに一致する行が返されます。それ以外の場合は、すべての行が返されます。以下のようなもの。

DECLARE @OrderID INT 
SET @OrderID = NULL

IF @OrderID IS NULL 
BEGIN
    SELECT * FROM #Customers
END
ELSE
BEGIN
    SELECT * FROM #Customers
    WHERE OrderID = @OrderID 
END

両方のケースをカバーできる WHERE 句を作成する方法があるかどうか疑問に思っていました。このようにして、IF-ELSE ブランチでのコードの重複を避けることができます

4

2 に答える 2