Занятие 1. Определение запроса к набору данных для матричного отчета
На этом занятии предстоит добавить новый отчет в проект сервера отчетов, созданный в учебнике Создание простого табличного отчета, определить источник данных и запрос к набору данных. В качестве источника данных используется образец базы данных База данных AdventureWorks2008R2. В учебнике считается, что эта база данных находится в экземпляре SQL Server по умолчанию, установленном на локальном компьютере.
Открытие существующего проекта служб Reporting Services
Нажмите кнопку Пуск, укажите Все программы, Microsoft SQL Server 2008 R2, а затем выберите пункт Среда Business Intelligence Development Studio.
В меню Файл укажите пункт Открыть и выберите пункт Проект или решение.
Перейдите к проекту сервера отчетов с именем Учебник.
В папке Учебник щелкните Tutorial.sln.
Нажмите Открыть, чтобы открыть проект.
В обозревателе решений будет отображен проект Учебник.
Создание нового отчета
В обозревателе решений щелкните правой кнопкой мыши элемент Отчеты, укажите пункт Добавить и выберите команду Создать элемент.
Примечание Если обозреватель решений не виден, откройте меню Вид и выберите пункт Обозреватель решений.
На панели Шаблоны диалогового окна Добавление нового элемента выберите Отчет.
В окне Имя введите Sales by Area and Year.rdl и нажмите кнопку Добавить.
Конструктор отчетов откроется в режиме конструктора, и в нем будет отображено пустое определение отчета.
Определение запроса Transact-SQL для данных отчета
На панели Данные отчета нажмите кнопку Создать и выберите Источник данных. Откроется диалоговое окно Свойства источника данных.
В поле Имя введите База данных AdventureWorks2008R2.
Убедитесь, что выбрано Внедренное соединение и что Тип равен Microsoft SQL Server.
В поле Строка соединения введите следующее:
Data source=localhost; initial catalog=AdventureWorks2008R2
Нажмите кнопку ОК.
Источник данных появится в области «Данные отчета».
На панели «Данные отчета» щелкните правой кнопкой мыши База данных AdventureWorks2008R2 и выберите команду Добавить набор данных.
В поле Имя введите 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 полей в семи разных таблицах базы данных AdventureWorks2008R2. В этом запросе имеется несколько полей, которые могут быть использованы для группирования данных в отчете: год и месяц даты заказа, географическое местоположение территории продажи (страна/область, территория) и категория и подкатегория продукта. Кроме того, данные о продажах были отфильтрованы так, чтобы получить только заказы на продажу за 2003 и 2004 года для продаж на территории Северной Америки по категориям Clothing и Components и по подкатегориям, начинающимся с буквы C. В этом учебнике фильтрация применяется с целью создания компактных примеров, умещающихся на одной странице.
Нажмите кнопку ОК. Нажмите кнопку OK еще раз.
Поля из запроса к набору данных появятся на панели «Данные отчета».
Следующая задача
Определен запрос, получающий данные для отчета. Затем нужно добавить область данных матрицы в область конструктора и организовать данные в матрице, добавив группы. См. раздел Занятие 2. Добавление области данных матрицы с группами строк и столбцов.