Поделиться через


Занятие 1. Определение запроса к набору данных для матричного отчета

На этом занятии предстоит добавить новый отчет в проект сервера отчетов, созданный в учебнике Создание простого табличного отчета, определить источник данных и запрос к набору данных. В качестве источника данных используется образец базы данных База данных AdventureWorks2008R2. В учебнике считается, что эта база данных находится в экземпляре SQL Server по умолчанию, установленном на локальном компьютере.

Открытие существующего проекта служб Reporting Services

  1. Нажмите кнопку Пуск, укажите Все программы, Microsoft SQL Server 2008 R2, а затем выберите пункт Среда Business Intelligence Development Studio.

  2. В меню Файл укажите пункт Открыть и выберите пункт Проект или решение.

  3. Перейдите к проекту сервера отчетов с именем Учебник.

  4. В папке Учебник щелкните Tutorial.sln.

  5. Нажмите Открыть, чтобы открыть проект.

    В обозревателе решений будет отображен проект Учебник.

Создание нового отчета

  1. В обозревателе решений щелкните правой кнопкой мыши элемент Отчеты, укажите пункт Добавить и выберите команду Создать элемент.

    ПримечаниеПримечание

    Если обозреватель решений не виден, откройте меню Вид и выберите пункт Обозреватель решений.

  2. На панели Шаблоны диалогового окна Добавление нового элемента выберите Отчет.

  3. В окне Имя введите Sales by Area and Year.rdl и нажмите кнопку Добавить.

    Конструктор отчетов откроется в режиме конструктора, и в нем будет отображено пустое определение отчета.

Определение запроса Transact-SQL для данных отчета

  1. На панели Данные отчета нажмите кнопку Создать и выберите Источник данных. Откроется диалоговое окно Свойства источника данных.

  2. В поле Имя введите База данных AdventureWorks2008R2.

    Убедитесь, что выбрано Внедренное соединение и что Тип равен Microsoft SQL Server.

  3. В поле Строка соединения введите следующее:

    Data source=localhost; initial catalog=AdventureWorks2008R2
    
  4. Нажмите кнопку ОК.

    Источник данных появится в области «Данные отчета».

  5. На панели «Данные отчета» щелкните правой кнопкой мыши База данных AdventureWorks2008R2 и выберите команду Добавить набор данных.

  6. В поле Имя введите Sales.

  7. Убедитесь, что в списке Тип запроса выбран тип Текст.

  8. Ниже панели Запрос щелкните Конструктор запросов, чтобы открыть текстовый конструктор отчетов.

  9. На панели запросов вставьте следующий запрос 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')
    
  10. Чтобы просмотреть результаты выполнения запроса, нажмите кнопку Выполнить (!) на панели инструментов конструктора запросов.

    В результирующем наборе отображаются данные из 18 полей в семи разных таблицах базы данных AdventureWorks2008R2. В этом запросе имеется несколько полей, которые могут быть использованы для группирования данных в отчете: год и месяц даты заказа, географическое местоположение территории продажи (страна/область, территория) и категория и подкатегория продукта. Кроме того, данные о продажах были отфильтрованы так, чтобы получить только заказы на продажу за 2003 и 2004 года для продаж на территории Северной Америки по категориям Clothing и Components и по подкатегориям, начинающимся с буквы C. В этом учебнике фильтрация применяется с целью создания компактных примеров, умещающихся на одной странице.

  11. Нажмите кнопку ОК. Нажмите кнопку OK еще раз.

    Поля из запроса к набору данных появятся на панели «Данные отчета».

Следующая задача

Определен запрос, получающий данные для отчета. Затем нужно добавить область данных матрицы в область конструктора и организовать данные в матрице, добавив группы. См. раздел Занятие 2. Добавление области данных матрицы с группами строк и столбцов.