Мне нужна небольшая помощь, чтобы разобраться с CURSOR.
Я сделал отчет aspx, это было довольно просто. Для каждого проекта мне нужно было увидеть, сколько часов ушло на исследования, разработки и внутренние дела. Тот первый был довольно простым, я просто жестко запрограммировал решение с 3 группами и равными 3 типами времени. Босс подумал, что это блестящий отчет, поэтому он хотел, чтобы он охватил всех клиентов. К сожалению, у следующего клиента было 5 групп, и у каждой группы было 2-7 разных типов времени для каждой.
Теперь мне нужно динамическое решение, в котором я могу указать группы (сделано) и указать, какие типы времени входят в каждую группу (сделано), наконец, мне нужно объединить эти два с таблицей, в которой записаны потраченные часы.
У меня есть базовый курсор, где я могу перечислить проекты, тип времени и сколько времени было потрачено в рамках этой группы времени.
У меня есть:
Проект A -|- Группа A -|- 5
Проект B -|- Группа A -|- 2
Проект C -|- Группа A -|- 10
Проект A -|- Группа B -|- 1
Проект B -|- Группа B -|- 10
Проект C -|- Группа B -|- 2
Проект A -|- Группа C -|- 0
Проект B -|- Группа C -|- 3
Проект C -|- Группа C -|- 7
Проблема в том, что мне нужно, чтобы отчет был
Заголовок____Группа A|Группа B|Группа C|Группа N
Проект A -|- 5 -|- 1 -|- 0 -|- x
Проект B - |- 2 -|- 10 -|- 3 -|- y
Проект C -|- 10 -|- 2 -|- 7 -|- z
DECLARE @iTimeTypeGroupID int DECLARE cur CURSOR LOCAL READ_ONLY FOR SELECT iRefTimeTypeGroupID FROM tbl_TimeTypeGrouping WHERE iRefCustomerID = @customerID OPEN cur FETCH NEXT FROM cur INTO @iTimeTypeGroupID WHILE @@FETCH_STATUS = 0 BEGIN SELECT PT.iRefProjectID , PT.iRefTimeTypeID , SUM(PT.decNumberOfHours) sumNumberOfHours FROM tbl_ProjectTransaction PT WHERE iRefTimeTypeID IN ( SELECT iRefTimeTypeID FROM tbl_TimeTypeGrouping WHERE iRefTimeTypeGroupID = @iTimeTypeGroupID AND iRefCustomerID = @customerID) GROUP BY PT.iRefProjectID , PT.iRefTimeTypeID FETCH NEXT FROM cur INTO @iTimeTypeGroupID END CLOSE cur DEALLOCATE cur