2016-06-01 5 views
0

Declare/Set 절을 사용하여 쿼리를 간소화합니다. 필드 중 하나에는 여러 부서가 있습니다. 때로는 한 department_id로 제한하고 여러 번 부서를 원할 때도 있습니다. 여러 부서 ID를 포함하도록 @dept를 설정할 수 있습니까?SET 절에 In 절 사용

declare @enddate datetime, @startdate datetime, @dxstartdate datetime, @dxenddate datetime,@ageanchor datetime,@activestart datetime, @activeend datetime, @dept numeric (18,0) 

SET @enddate='2016-05-31' 
SET @startdate = '2015-06-01' 
SET @dxstartdate = '2015-06-01' 
SET @dxenddate = '2016-05-31' 
SET @ageanchor = '2016-05-31' 
SET @activestart = '2014-06-01' 
SET @activeend = '2016-05-31' 
***SET @dept = in "dept1', 'dept2' ???(What do I put here?)*** 
+0

그렇지 않습니다. 스칼라 변수는 스칼라 값만 보유합니다. 여러 값을 보유하려면 테이블 변수 또는 임시 테이블을 사용해야합니다. –

답변

0

하나의 옵션은 부서의 수에 걸릴 수 있도록 VARCHAR(MAX)@dept을 설정하는 것입니다. 그런 다음 SET @dept = 'dept1,dept2,dept3'. 이제 쉼표로 구분 된 목록 변수를 열로 나눌 수 있고 코드에서 JOIN을 사용할 수 있습니다. 먼저 쉼표로 구분 된이 목록을 테이블로 변환하는 함수가 필요합니다. 참조 : How to validate a comma separated string using array in SQL SQL 2016을 사용하는 경우가 아니면 STRING_SPLIT()을 사용할 수있는 경우가 아니면이 작업을 수행하는 기능을 게시했습니다. 어느 쪽이든, 당신은 당신의 데이터를 필터링하기 위해 SELECT 성명서에 INNER JOIN에있는 부서의 컬럼에 집중할 것입니다.