매개 변수가 3 개이지만 3 개 중 하나만 조합하거나 두 개 중 하나만 채우거나 둘 중 하나만 채울 수있는 쿼리를 스크립팅하려고합니다. 세 개 모두.SQL - 하나 이상의 매개 변수를 기반으로 모든 매개 변수가 아닌 필터를 기반으로합니다.
내가 시도한 쿼리는 다음과 같습니다. 내가 잘못하고있는 것을 조언 해 주실 수 있습니까? 난 단지 매개 변수 중 하나를 채울 경우
DECLARE @Parameter1 NVARCHAR(255) =''
DECLARE @Parameter2 NVARCHAR(255) = ''
DECLARE @Parameter3 NVARCHAR(10) = ''
SELECT x.*
from
(
SELECT
list of columns for various tables
,case when len(@Parameter1) > 1 and apa.ACTION_DESCRIPTION like ('%' [email protected] + '%') then 1 else 0 end [Parameter1]
,case when len(@Parameter2) > 1 and p.plan_name like ('%' + @Parameter2 + '%') then 1 else 0 end [Parameter2]
,case when len(@Parameter3) > 1 and r.res_code like ('%' + @Parameter3 + '%') then 1 else 0 end [Parameter3]
FROM [LFB_Vision_GazAdmin].[dbo].[Gtablename] gap
left outer join [dbo].[table2] as ap on ap.PLAN_ID=gap.PLAN_ID
left outer join dbo.table3 p on p.plan_ID = p.PLAN_ID
left outer join dbo.table4 as apa on ap.[ACTION_ID] = apa.ACTION_ID
left outer join dbo.table5 R ON GAP.FCL_URN = R.FCL_URN
-- where
-- (apa.ACTION_DESCRIPTION like ('%' + @Parameter1 + '%')
--OR p.PLAN_NAME like ('%' + @Parameter2 + '%')
--OR R.RESPONSECODE = @Parameter3
-- )
) x
where (
(x.Parameter1=1 and (x.Parameter2=0 and x.Parameter3=0))
or (x.Parameter2=1 and (x.Parameter1=0 and x.Parameter3=0))
or (x.Parameter3=1 and (x.Parameter1=0 and x.Parameter2=0))
or (x.Parameter3=0 and (x.Parameter1=1 and x.Parameter2=1))
or (x.Parameter2=0 and (x.Parameter1=1 and x.Parameter3=1))
or (x.Parameter1=0 and (x.Parameter2=1 and x.Parameter3=1))
or (x.Parameter1=1 and x.Parameter2=1 and x.Parameter3=1)
)
위의 쿼리
작동하지만 두 개 또는 세 가지를 모두 채울 경우 나에게이 첫 번째 또는 두 번째 매개 변수와 관련 데이터를 제공으로 그것은 나에게 더 많은 행을 제공합니다. 두 개가 채워지면 두 매개 변수를 모두 고려하고 세 개 모두 채워지면 세 개를 모두 고려해야합니다.나는 도움을 주셔서 감사합니다.
고맙습니다.
* 당신이 내가 뭘 잘못 알려 주시기 바랍니다 수 있습니다 얻을 ? * ... 우선, 무엇이 잘못되었는지 알려주십시오 - 오류? 바람직하지 않은 결과? – Parfait
@ Parfait, 매개 변수 중 하나만 채우면 작동하지만 두 개 또는 세 개 모두 채우면 나에게 두 번째 또는 두 번째 매개 변수와 관련된 데이터를 제공하여 더 많은 행을 제공합니다. 두 개가 채워지면 두 매개 변수를 모두 고려하고 세 개 모두 채워지면 세 개를 모두 고려해야합니다. – msinghm
당신은 그 논리를 전혀 시도하지 않았습니까? 그것들은'WHERE' 절이 무엇인가, 아니면 @Parameter #와 관계가없는 조항입니까? 특히 두 집합이 모두 다른 유형입니까? – Parfait