Занятие 1. Определение запроса к набору данных для матричного отчета
- На этом занятии предстоит добавить новый отчет в проект сервера отчетов, созданный в учебнике Создание основного табличного отчета, определить источник данных и запрос к набору данных. В качестве источника данных используется образец базы данных AdventureWorks2008. В учебнике предполагается, что эта база данных находится в экземпляре SQL Server по умолчанию, установленном на локальном компьютере.
Открытие существующего проекта служб Reporting Services
Нажмите кнопку Пуск, последовательно укажите пункты Все программы, Microsoft SQL Server 2008, а затем выберите пункт Среда Business Intelligence Development Studio.
В меню Файл укажите команду Открыть и выберите пункт Решение или проект.
Перейдите к проекту сервера отчетов с именем Учебник.
В папке Учебник щелкните файл Tutorial.sln.
Нажмите кнопку Открыть, чтобы открыть проект.
В обозревателе решений будет отображен проект Учебник.
Создание нового отчета
В обозревателе решений щелкните правой кнопкой мыши узел Отчеты, укажите команду Добавить и выберите команду Создать элемент.
ПримечаниеЕсли обозреватель решений не виден, в меню Вид выберите пункт Обозреватель решений.
В области Шаблоны диалогового окна Добавление нового элемента выберите Отчет.
В поле Имя введите Продажи по областям и годам.rdl и нажмите кнопку Добавить.
Конструктор отчетов откроется в режиме конструктора, и в нем будет отображено пустое определение отчета.
Определение запроса Transact-SQL для данных отчета
В области Данные отчета нажмите кнопку Создать и выберите Источник данных.
В поле Имя введите AdventureWorksMatrixData.
В области Источник данных нажмите кнопку Создать. Откроется диалоговое окно Свойства источника данных.
В поле Имя введите AdventureWorks2008.
Убедитесь, что выбрано Внедренное соединение и что Тип имеет значение Microsoft SQL Server.
В поле Строка соединения введите следующее:
Data source=localhost; initial catalog=AdventureWorks2008Нажмите кнопку ОК.
Источник данных появится в области «Данные отчета».
В области «Данные отчета» щелкните правой кнопкой мыши источник данных AdventureWorks2008 и выберите команду Добавить набор данных.
В поле Имя введите Sales.
Убедитесь, что в списке Тип запроса выбран тип Текст.
Ниже области Запрос щелкните Конструктор запросов, чтобы открыть текстовый конструктор отчетов.
В области запросов вставьте следующий запрос Transact-SQL.
SELECT SOH.SalesPersonID AS ID, P.FirstName, P.LastName, SOH.SalesOrderNumber AS [Order], SOH.OrderDate AS [Date], DATEPART(yy, SOH.OrderDate) AS [Year], DATEPART(mm, SOH.OrderDate) AS [Month], ST.[Group] AS [Geography], ST.CountryRegionCode AS CountryRegion, ST.Name AS Territory, PPC.Name AS Category, PPS.Name AS Subcat, PP.Name AS Product, PP.Color, PP.Size, CASE WHEN PP.Size = 'S' THEN 1 WHEN PP.Size = 'M' THEN 2 WHEN PP.Size = 'L' THEN 3 WHEN PP.Size = 'XL' THEN 4 ELSE PP.Size END AS SizeSortOrder, SUM(SD.OrderQty) AS Qty, SUM(SD.LineTotal) AS LineTotal FROM Sales.SalesPerson AS SP INNER JOIN Sales.SalesOrderHeader AS SOH ON SP.BusinessEntityID = SOH.SalesPersonID INNER JOIN Person.Person AS P ON P.BusinessEntityID = SP.BusinessEntityID INNER JOIN Sales.SalesOrderDetail AS SD ON SD.SalesOrderID = SOH.SalesOrderID INNER JOIN Production.Product AS PP ON SD.ProductID = PP.ProductID INNER JOIN Sales.SalesTerritory AS ST ON ST.TerritoryID = SP.TerritoryID INNER JOIN Production.ProductSubcategory AS PPS ON PP.ProductSubcategoryID = PPS.ProductSubcategoryID INNER JOIN Production.ProductCategory AS PPC ON PPC.ProductCategoryID = PPS.ProductCategoryID GROUP BY PPC.Name, SOH.OrderDate, SOH.SalesOrderNumber, PPS.Name, PP.Name, SOH.SalesPersonID, P.LastName, P.FirstName, ST.[Group], ST.CountryRegionCode, ST.Name, PP.Color, PP.Size HAVING (DATEPART(yy,SOH.OrderDate) IN ('2003','2004') AND ST.[Group] = 'North America' AND LEFT(PPS.Name,1) IN ('C','T') AND LEFT(PPC.Name,1) = 'C')Чтобы просмотреть результаты выполнения запроса, на панели инструментов конструктора запросов нажмите кнопку Выполнить (!).
В результирующем наборе отображаются данные из 18 полей семи разных таблиц базы данных AdventureWorks2008. В этом отчете есть разные поля, которые можно использовать для группирования данных в отчете, включая год и месяц даты заказа, географическое расположение территории продажи (страна и область), категорию и подкатегорию продукта. Кроме того, данные о продажах были отфильтрованы так, чтобы получить только заказы на продажу за 2003 и 2004 года для продаж на территории Северной Америки по категориям Clothing и Components и по подкатегориям, начинающимся с буквы C. В этом учебнике фильтрация применяется с целью создания компактных примеров, умещающихся на одной странице.
Нажмите кнопку ОК. Нажмите кнопку ОК еще раз.
Поля из запроса к набору данных появятся в области «Данные отчета».
Следующая задача
Запрос, получающий данные для отчета, успешно определен. Затем нужно добавить матричную область данных в область конструктора и организовать данные в матрице, добавив группы. См. раздел Занятие 2. Добавление матричной области данных с группами строк и столбцов.