1단원: 보고서를 날짜로 필터링하는 매개 변수 추가(보고서 작성기 2.0)
보고서 쿼리에 시작 및 종료 날짜의 매개 변수를 포함하여 데이터 원본에서 검색한 데이터를 제한하는 날짜 범위를 지정할 수 있습니다. 추가 매개 변수를 만들어 데이터 원본에서 검색한 데이터를 필터링할 수 있습니다.
이 단원에서는 쿼리에 @StartDate 및 @EndDate 매개 변수를 추가하여 데이터 원본에서 검색되는 데이터를 제한합니다. StartDate 및 EndDate 보고서 매개 변수는 자동으로 생성되어 보고서 데이터 창에 나타납니다. 매개 변수는 대소문자를 구분합니다. Transact-SQL에서 쿼리 매개 변수는 @ 기호로 시작하지만 보고서 데이터 창에 표시되는 보고서 매개 변수는 그렇지 않습니다.
매개 변수의 데이터 형식을 DateTime으로 설정하여 보고서 뷰어 도구 모음에 매개 변수 입력란과 함께 달력 컨트롤이 표시되도록 하고, 보고서가 자동으로 실행되도록 매개 변수의 기본값을 설정합니다. 마지막으로 쿼리 매개 변수에 바인딩되지 않은 보고서 매개 변수 DayofWeek를 만든 다음 이를 사용하여 데이터 원본에서 검색한 데이터를 필터링합니다.
이 자습서를 사용하려면 이전 단원인 자습서: 기본 테이블 보고서 만들기(보고서 작성기 2.0)를 완료해야 합니다.
기존 보고서를 열려면
시작을 클릭하고 프로그램, Microsoft SQL Server 2008 보고서 작성기를 차례로 가리킨 다음 보고서 작성기 2.0을 클릭합니다.
보고서 작성기 단추에서 열기를 클릭합니다.
Sales Order로 이동합니다. 이 보고서는 자습서: 기본 테이블 보고서 만들기(보고서 작성기 2.0)에서 만든 것입니다.
열기를 클릭합니다. 보고서 정의가 디자인 뷰에서 열립니다.
그런 다음 데이터 집합 쿼리를 쿼리 매개 변수가 포함된 쿼리로 바꿉니다.
기존 데이터 집합 쿼리를 바꾸려면
보고서 데이터 창에서 데이터 집합 DataSet1을 마우스 오른쪽 단추로 클릭한 다음 쿼리를 클릭합니다. 쿼리 디자이너가 열립니다.
쿼리 창에서 텍스트를 다음 쿼리로 바꿉니다.
SELECT SH.OrderDate ,SH.SalesOrderNumber ,SD.OrderQty ,SD.LineTotal ,P.Name AS [Product] ,PS.Name AS [Subcategory] FROM Sales.SalesOrderHeader AS SH INNER JOIN Sales.SalesOrderDetail AS SD ON SH.SalesOrderID = SD.SalesOrderID INNER JOIN Production.Product AS P ON SD.ProductID = P.ProductID INNER JOIN Production.ProductSubcategory AS PS ON PS.ProductSubcategoryID = P.ProductSubcategoryID INNER JOIN Production.ProductCategory AS PC ON PC.ProductCategoryID = PS.ProductCategoryID WHERE PC.Name = 'Clothing' AND SH.OnlineOrderFlag = 0 AND (SH.OrderDate BETWEEN (@StartDate) AND (@EndDate))
이 쿼리는 ORDER BY 정렬 절이 제거되었고 두 개의 제한 매개 변수가 있는 조건이 추가되었다는 점을 제외하면 이전 쿼리와 동일합니다.
AND (SH.OrderDate BETWEEN (@StartDate) AND (@EndDate))
도구 모음에서 실행(!)을 클릭합니다. 쿼리 매개 변수 정의 대화 상자가 열리고 각 매개 변수에 대한 값을 입력하라는 메시지가 나타납니다.
필터링된 결과 집합을 표시하기 위해 두 값을 제공합니다.
매개 변수 값 열에서 @StartDate에 대한 값을 입력합니다(예: 20010101).
매개 변수 값 열에서 @EndDate에 대한 값을 입력합니다(예: 20030101).
확인을 클릭합니다.
결과 집합에는 2001년과 2002년의 주문에 대한 값이 있는 데이터 집합이 표시됩니다.
확인을 클릭합니다.
보고서 데이터 창에서 매개 변수 노드를 확장하여 쿼리 매개 변수에서 자동으로 만들어지는 두 개의 보고서 매개 변수인 StartDate 및 EndDate를 표시합니다.
날짜 또는 시간을 나타내는 쿼리 매개 변수를 정의한 후에는 보고서 매개 변수의 데이터 형식이 일치하도록 변경해야 합니다.
보고서 매개 변수의 데이터 형식과 기본값을 변경하려면
보고서 데이터 창에서 StartDate를 마우스 오른쪽 단추로 클릭한 다음 매개 변수 속성을 클릭합니다.
매개 변수의 이름이 StartDate이고 프롬프트가 Start Date인지 확인합니다.
데이터 형식에서 날짜/시간을 선택합니다. 이렇게 하면 보고서 정의에 저장되는 보고서 매개 변수 데이터 형식이 설정됩니다.
확인을 클릭합니다.
보고서 데이터 창에서 EndDate를 두 번 클릭합니다. 이름과 프롬프트 값을 확인합니다.
데이터 형식에서 날짜/시간을 선택합니다.
확인을 클릭합니다.
실행을 클릭하여 보고서를 미리 봅니다. StartDate 및 EndDate 매개 변수 각각이 달력 컨트롤과 함께 보고서 도구 모음에 나타납니다. 매개 변수가 Date/Time 데이터 형식인데 사용 가능한 값 목록을 정의하지 않은 경우 달력 컨트롤이 자동으로 나타납니다. 사용 가능한 값 목록을 정의한 경우에는 값 드롭다운 목록이 나타납니다.
두 매개 변수 값을 제공하여 보고서를 실행합니다. 달력 컨트롤을 사용하거나 다음 날짜를 입력할 수 있습니다.
StartDate 매개 변수 입력란에 2001-01-01을 입력합니다.
EndDate 매개 변수 입력란에 2003-01-01을 입력합니다.
보고서 보기를 클릭합니다. 보고서에는 보고서 매개 변수 값에 해당하는 데이터만 표시됩니다.
보고서에 대한 보고서 매개 변수를 만든 후에 매개 변수의 기본값을 추가할 수 있습니다. 기본 매개 변수를 사용하면 보고서가 자동으로 실행되며 그렇지 않은 경우에는 사용자가 매개 변수 값을 입력해야 보고서가 실행됩니다.
매개 변수의 기본값을 설정하려면
디자인 뷰로 전환합니다.
보고서 데이터 창에서 매개 변수를 확장하고 StartDate를 두 번 클릭합니다. 보고서 매개 변수 속성 대화 상자가 열립니다.
기본값을 클릭합니다.
값 지정 옵션을 선택합니다. 추가 단추와 빈 값 표가 나타납니다.
추가를 클릭합니다. 표에 빈 행이 추가됩니다.
값 입력란에서 기본 텍스트 (Null)을 바꾸고 2001-01-01을 입력합니다.
확인을 클릭합니다.
보고서 디자인 창에서 EndDate를 두 번 클릭합니다.
기본값을 클릭합니다.
값 지정 옵션을 선택합니다.
추가를 클릭합니다.
2003-01-01을 입력합니다.
확인을 클릭합니다.
미리 보기를 클릭합니다. 각 매개 변수에 기본값이 있기 때문에 보고서는 즉시 실행됩니다.
쿼리에 새 필드를 추가하여 필터링에 사용하려면
디자인 뷰로 전환합니다.
데이터 집합 DataSet1을 마우스 오른쪽 단추로 클릭하고 데이터 집합 속성을 선택합니다. 쿼리 디자이너를 열고 쿼리를 다음의 새 쿼리로 바꿉니다.
SELECT SH.OrderDate ,DATENAME(weekday, SH.OrderDate) as Weekday ,SH.SalesOrderNumber ,SD.OrderQty ,SD.LineTotal ,P.Name AS [Product] ,PS.Name AS [Subcategory] FROM Sales.SalesOrderHeader AS SH INNER JOIN Sales.SalesOrderDetail AS SD ON SH.SalesOrderID = SD.SalesOrderID INNER JOIN Production.Product AS P ON SD.ProductID = P.ProductID INNER JOIN Production.ProductSubcategory AS PS ON PS.ProductSubcategoryID = P.ProductSubcategoryID INNER JOIN Production.ProductCategory AS PC ON PC.ProductCategoryID = PS.ProductCategoryID WHERE PC.Name = 'Clothing' AND SH.OnlineOrderFlag = 0 AND (SH.OrderDate BETWEEN (@StartDate) AND (@EndDate))
쿼리에서 SELECT 문에 다음 명령을 추가하면 판매가 발생한 요일에 대한 추가적인 계산 열이 정의됩니다.
,DATENAME(weekday, soh.OrderDate) as Weekday.
실행(!)을 클릭합니다. 쿼리 매개 변수 정의 대화 상자가 열립니다.
매개 변수 값 열에서 @StartDate에 대한 값을 입력합니다(예: 20010101).
매개 변수 값 열에서 @EndDate에 대한 값을 입력합니다(예: 20030101).
확인을 클릭합니다. 결과 집합에 레이블이 Weekday인 새 열이 표시됩니다.
확인을 두 번 클릭합니다. 보고서 데이터 창에서 Weekday가 필드인지 확인합니다.
이제 테이블에 요일을 식별하는 데이터가 있으므로 특정 요일의 판매만 보고서에 사용되도록 하는 필터를 추가할 수 있습니다. 확인을 위해 요일과 판매 주문 날짜를 표시할 수 있습니다.
테이블의 날짜에 형식을 지정하려면
디자인 뷰로 전환합니다.
OrderDate 필드 식이 있는 셀을 클릭합니다. 홈 탭의 숫자 그룹에서 대화 상자 실행 프로그램을 클릭합니다.
범주에서 날짜가 선택되어 있는지 확인합니다.
유형 상자에서 요일을 표시하는 날짜 유형을 선택합니다. 예를 들어 국가별 설정이 영어(미국)인 경우에는 Monday, January 31, 2000을 선택할 수 있습니다.
확인을 클릭합니다.
실행을 클릭하여 보고서를 미리 봅니다. 테이블의 첫 번째 열에 있는 날짜는 달력 날짜와 요일을 표시합니다.
그런 다음 사용자가 요일을 기준으로 필터링할 수 있도록 매개 변수를 추가합니다.
새 보고서 매개 변수를 추가하려면
디자인 뷰로 전환합니다.
보고서 데이터 창에서 새로 만들기를 클릭하고 매개 변수를 클릭합니다. 보고서 매개 변수 속성 대화 상자가 열립니다.
이름에서 DayoftheWeek를 입력합니다.
프롬프트에서 Filter on the day of the week:를 입력합니다.
데이터 형식이 Text인지 확인합니다.
기본값을 클릭합니다.
값 지정 옵션을 선택합니다. 추가 단추와 빈 값 표가 나타납니다.
추가를 클릭합니다.
Friday를 입력합니다.
확인을 클릭합니다.
그런 다음 DayoftheWeek 매개 변수에 대해 선택한 값만 표시되도록 하는 필터를 추가합니다. 테이블 또는 데이터 집합에 필터를 추가할 수 있습니다. 이 보고서에는 같은 데이터를 표시하는 테이블과 차트가 모두 들어 있습니다. 필터링된 데이터를 테이블에만 표시하려면 테이블에 필터를 추가합니다. 테이블과 차트 모두에 필터링된 데이터가 표시되도록 하려면 데이터 집합에 필터를 추가합니다. 다음 절차에서는 데이터 집합에 필터를 설정합니다.
매개 변수 식을 사용하여 데이터 집합 필터를 설정하려면
디자인 뷰의 보고서 데이터 창에서 DataSet1을 마우스 오른쪽 단추로 클릭한 다음 데이터 집합 속성을 클릭합니다.
필터를 클릭합니다.
추가를 클릭합니다. 표에 빈 행이 추가됩니다.
식의 드롭다운 목록에서 [Weekday]를 선택합니다.
연산자에 등호(=)가 표시되는지 확인합니다.
값 입력란 옆의 식 단추(fx)를 클릭합니다. 식 대화 상자가 열립니다.
범주에서 매개 변수를 클릭합니다. 매개 변수의 현재 목록이 값 창에 나타납니다. DayoftheWeek를 두 번 클릭합니다. 매개 변수 식이 식 입력란에 추가됩니다. 이제 식 입력란에 다음 식이 표시됩니다. =Parameters!DayoftheWeek.Value
확인을 클릭합니다.
값은 DayoftheWeek 매개 변수에 대한 간단한 식을 표시합니다. [@DayoftheWeek].
확인을 클릭합니다.
이제 Weekday 필드의 값을 DayoftheWeek에 대한 매개 변수 값과 비교할 수 있도록 데이터 집합에 대한 필터가 설정됩니다. 예를 들어 보고서 도구 모음에 DayoftheWeek에 대해 Friday 값을 입력하는 경우 보고서 처리기는 Weekday 필드에 대한 값이 Friday인 테이블에서 해당 행만 처리합니다.
미리 보기를 클릭합니다. 모든 매개 변수에 기본값이 있으므로 보고서가 자동으로 실행됩니다. StartDate 및 EndDate에서 정의한 날짜 범위 내에 있고 Friday에 해당하는 값만 테이블과 차트에 표시됩니다. 이 데이터 집합의 경우 다음 세 개의 날짜만 Friday에 해당합니다.
February 1, 2002
March 1, 2002
November 1, 2002
다음 단계
지금까지 쿼리 매개 변수 및 보고서 매개 변수를 정의하고 매개 변수의 기본값을 설정하고 데이터 집합에 필터를 설정했습니다. 다음 단원에서는 매개 변수에 사용 가능한 값 또는 유효한 값 목록을 만드는 방법을 설명합니다. 2단원: 매개 변수를 추가하여 사용 가능한 값 목록 만들기(보고서 작성기 2.0)를 참조하십시오.