2
DECLARE @MinPV MONEY -- PSV
DECLARE @MaxPV MONEY -- PSV
DECLARE @MinGV MONEY -- GV
DECLARE @MaxGV MONEY -- GV
DECLARE @MinLBV MONEY -- LBV
DECLARE @MaxLBV MONEY -- LBV
DECLARE @MinRBV MONEY -- RBV
DECLARE @MaxRBV MONEY -- RBV
SET @MinPV = 5 -- PSV
SET @MaxPV = 0 -- PSV
SET @MinGV = NULL -- GV
SET @MaxGV = NULL -- GV
SET @MinLBV = NULL -- LBV
SET @MaxLBV = NULL -- LBV
SET @MinRBV = NULL -- RBV
SET @MaxRBV = NULL -- RBV
SELECT psv,*
FROM Distributordetail
WHERE
(PSV BETWEEN @MinPV AND @MaxPV) OR -- Both @MinVol and @MaxVol supplied
(PSV > @MinPV AND @MaxPV IS NULL) OR -- Only @MinVol supplied
(PSV < @MaxPV AND @MinPV IS NULL) OR -- Only @MaxVol supplied
WHERE 절에 4 개의 행이 있습니다. 전달할 수있는 각 매개 변수에 대해 더 많은 행을 추가해야합니다. 더 좋은 방법이 있는지 알려주시겠습니까? EDITED이 SQL 쿼리를 수행하는 더 좋은 방법이 있습니까?
:
(PSV BETWEEN @MinPV AND @MaxPV) OR -- Both @MinVol and @MaxVol supplied
(PSV > @MinPV AND @MaxPV IS NULL) OR -- Only @MinVol supplied
(PSV < @MaxPV AND @MinPV IS NULL) OR -- Only @MaxVol supplied
(@MinPV IS NULL AND @MaxPV IS NULL) -- Neither @MinVol and @MaxVol supplied
(GSV BETWEEN @MinGV AND @MaxGV) OR -- Both @MinVol and @MaxVol supplied
(GSV > @MinGV AND @MaxGV IS NULL) OR -- Only @MinVol supplied
(GSV < @MaxGV AND @MinGV IS NULL) OR -- Only @MaxVol supplied
(@MinGV IS NULL AND @MaxGV IS NULL) -- Neither @MinVol and @MaxVol supplied
내가 할 수 있습니다 : 당신이 두 매개 변수가
NULL
을 경우 결과를 제외 할 때문에, 나는@MoneyMin
또는@MoneyMax
에NULL
에서 매개 변수 값을 변경하기 전에 쿼리 전에 조건부 검사를 수행 할 이걸로 일해라. 약간 놀아 줘서 고마워. –이것이 내가 필요한 것을 위해 잘 작동하는지 모르겠다. 또 하나의 부분을 달성하는 좋은 방법이다. 전달할 수있는 8 개의 매개 변수가 있지만 PV 매개 변수를 전달하지는 않지만 GV 매개 변수를 전달하는 경우 PV에 대해 표시하지 않고 GV로 표시해야합니다. 설치 방식에 관계없이 PV를 전달하는지 여부에 관계없이 항상 PV가 표시됩니다. –
@JamesWilson 죄송합니다, 혼란 스러워요 ... 당신은 아무것도 PV에 전달되지 않는 경우 PV 기록을 포함하고 싶지 않다고 말하지만, 귀하의 예에서는 당신은 'OR (@MinPV IS NULL 및 @MaxPV IS NULL)'... 당신이 묘사하는 것과 정반대의 것을 시도하고 있습니다. –