2
私は3つのパラメータを持つストアドプロシージャを持っています。 Null/Not Nullのすべての組み合わせをチェックしたいが、Elseと一緒に16種類のSelectステートメントを書くのではなく、どうすればそれを書くことができるのだろうか?ここに私の例では、...現在SQL:Null/Not Null条件で3つのパラメータのストアドプロシージャを記述すると、より良い(より短い)方法が得られますか?
...
ELSE IF @team IS NOT NULL AND
@position IS NULL AND
@filter IS NOT NULL
BEGIN
SELECT P1.PlayerKey, P1.Player, P2.Position, P1.Height, P1.Weight, P1.Speed, P1.Status
FROM Player AS P1
INNER JOIN Position AS P2 ON P1.PositionID = P2.PositionID
INNER JOIN Team AS T1 ON T1.TeamID = P1.TeamID
WHERE P1.TeamID = @team AND P1.Player LIKE '%' + @filter + '%'
ORDER BY P2.PosSort;
END
ELSE IF @team IS NULL AND
@position IS NOT NULL AND
@filter IS NOT NULL
BEGIN
SELECT P1.PlayerKey, P1.Player, P2.Position, P1.Height, P1.Weight, P1.Speed, P1.Status
FROM Player AS P1
INNER JOIN Position AS P2 ON P1.PositionID = P2.PositionID
INNER JOIN Team AS T1 ON T1.TeamID = P1.TeamID
WHERE P2.Position = @position AND P1.Player LIKE '%' + @filter + '%'
ORDER BY P2.PosSort;
END
ELSE IF @team IS NOT NULL AND
@position IS NULL AND
@filter IS NOT NULL
BEGIN
SELECT P1.PlayerKey, P1.Player, P2.Position, P1.Height, P1.Weight, P1.Speed, P1.Status
FROM Player AS P1
INNER JOIN Position AS P2 ON P1.PositionID = P2.PositionID
INNER JOIN Team AS T1 ON T1.TeamID = P1.TeamID
WHERE P1.TeamID = @team AND P1.Player LIKE '%' + @filter + '%'
ORDER BY P2.PosSort;
END
...
クールです!本当にありがとう。私はそこに別の方法がなければならないことを知っていましたが、それを見た後で...明らかです。本当にありがとう! – daveomcd