2017-01-28 1 views
0

Я хочу создать отчет по линейной диаграмме RDLC для сравнения - 1 элемент для многих отделов в 3 разных периодах.Отчет по линейной диаграмме RDLC для сравнения каждого элемента из разных отделов и 3 разных периода времени

Какое поле данных я должен получить из базы данных? Я использовал ниже Query, но этого недостаточно для диаграммы.

SELECT d.DepartmentName, 
     SUM(CASE WHEN r.Date BETWEEN '2016-10-01' AND '2016-10-31' THEN ri.RequiredQty ELSE 0 END) FirstMonth, 
     SUM(CASE WHEN r.Date BETWEEN '2016-11-01' AND '2016-11-30' THEN ri.RequiredQty ELSE 0 END) SecondMonth, 
     SUM(CASE WHEN r.Date BETWEEN '2016-12-01' AND '2016-12-31' THEN ri.RequiredQty ELSE 0 END) ThirdMonth 
FROM RequisitionItem ri, Requisition r, [User] u, Department d 
WHERE ri.RequisitionID = r.RequisitionID 
AND  r.UserID = u.UserID 
AND  u.DepartmentID = d.DepartmentID 
AND  ri.ItemID = 'C001' 
AND  d.DepartmentID IN ('BIOL' , 'COMM', 'BIZL', 'CPSC') 
GROUP BY d.DepartmentName 

enter image description here

+0

Добро пожаловать в переполнение стека! Сначала вы можете взять тур (http://stackoverflow.com/tour) и узнать [Как задать хороший вопрос] (http://stackoverflow.com/help/how-to-ask) и создать [ Minimal, Complete и Verifiable] (http://stackoverflow.com/help/mcve). Это облегчает нам помощь. –

ответ

0

Это не правильный способ, чтобы получить данные для формирования диаграммы. Каждая строка ваш выбор должен содержать 3 информацию

  • серии информация в вашем случае отдел
  • оси X данные, которые, я полагаю, должен быть период времени
  • Ось Y данные, которые являются необходимой величиной

Так что ваш запрос должен выглядеть так, как будто

 SELECT d.DepartmentName, --series field 
      LEFT(CONVERT(varchar, r.Date,112),6) Period, --X Axis Values 
      SUM(ri.RequiredQty) Quantity, --Y axis values 
     FROM RequisitionItem ri, Requisition r, [User] u, Department d 
     WHERE ri.RequisitionID = r.RequisitionID 
     AND  r.UserID = u.UserID 
     AND  u.DepartmentID = d.DepartmentID 
     AND  ri.ItemID = 'C001' 
     AND  d.DepartmentID IN ('BIOL' , 'COMM', 'BIZL', 'CPSC') 
     GROUP BY d.DepartmentName, LEFT(CONVERT(varchar, r.Date,112),6) 

Информация: данная инструкция LEFT(CONVERT(varchar, r.Date,112),6) используется для преобразования вашего поля даты в поле YYYYMM так, чтобы группа по отделам групп и месяц вместе.