Expiring Today—Celebrate National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

Query and Sum

Posted on 2011-09-06
3
Medium Priority
?
470 Views
Last Modified: 2012-05-12
I am working on developing a query against Microsoft Project Server database.  I want the ability to calculate the amount of hours an individual will be working within a given period of time.  I've developed the code noted below. and it works, for the most part.  

However, as you will see, if a 'resource' has multiple tasks during that week, it will return that resource multiple times.  I was to return only 1 row for each individuals.

Here's what I need:
Resource Name                     Work Sum
V                                                44
W                                                20
M                                                14
B                                                 0

Can someone assist?
SELECT     MSP_EpmAssignment.AssignmentStartDate, MSP_EpmAssignment.AssignmentFinishDate, SUM(MSP_EpmAssignmentByDay_UserView.AssignmentWork) 
                      AS WorkSum, MSP_EpmResource_UserView.ResourceName
FROM         MSP_EpmAssignmentByDay_UserView INNER JOIN
                      MSP_EpmProject_UserView ON MSP_EpmAssignmentByDay_UserView.ProjectUID = MSP_EpmProject_UserView.ProjectUID INNER JOIN
                      MSP_EpmTask_UserView ON MSP_EpmAssignmentByDay_UserView.ProjectUID = MSP_EpmTask_UserView.ProjectUID AND 
                      MSP_EpmAssignmentByDay_UserView.TaskUID = MSP_EpmTask_UserView.TaskUID INNER JOIN
                      MSP_EpmAssignment ON MSP_EpmAssignmentByDay_UserView.AssignmentUID = MSP_EpmAssignment.AssignmentUID AND 
                      MSP_EpmAssignmentByDay_UserView.ProjectUID = MSP_EpmAssignment.ProjectUID AND 
                      MSP_EpmAssignmentByDay_UserView.TaskUID = MSP_EpmAssignment.TaskUID INNER JOIN
                      MSP_EpmResource_UserView ON MSP_EpmAssignment.ResourceUID = MSP_EpmResource_UserView.ResourceUID
GROUP BY MSP_EpmAssignment.AssignmentStartDate, MSP_EpmAssignment.AssignmentFinishDate, MSP_EpmResource_UserView.ResourceName
HAVING      (MSP_EpmAssignment.AssignmentStartDate >= CONVERT(DATETIME, '2011-08-28 00:00:00', 102)) AND 
                      (MSP_EpmAssignment.AssignmentFinishDate <= CONVERT(DATETIME, '2011-09-04 00:00:00', 102)) AND 
                      (NOT (MSP_EpmResource_UserView.ResourceName IS NULL))

Open in new window

Query.jpg
0
Comment
Question by:eciabattari
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
3 Comments
 
LVL 6

Expert Comment

by:markterry
ID: 36489826
Your problem is not the multiple tasks, but rather more clearly, the multiple start and finish dates.

You can build a table of weeks, and join to that table where assignment start and end date are withing that week, and group on week.
0
 
LVL 6

Expert Comment

by:markterry
ID: 36489881
group on week instead of assignment start and end date i mean.

So that might look like

TableWeeks

Week                                       Start            End
2011-09-04 to 2011-09-10      2011-09-04  2011-09-10
etc.


Select Week, Sum(Amount) from tasks
inner join TablesWeek
on tasks.assigment_start  >= Week.Start
and task.assignment_end <= week.end


However, this will be a problem when an assignment lasts longer than a week, so maybe you only want to worry about the week start date only and call it WeekStarted.
0
 
LVL 6

Accepted Solution

by:
markterry earned 2000 total points
ID: 36489933
Shoot, I should also add into that, that even if it is just weekstart, you also have to say that assignment start less than weekend, and if it is definitively in a week, then also assignment end must be > week.start.

Only care about week start:
Select Week, Sum(Amount) from tasks
inner join TablesWeek
on tasks.assigment_Start  >= Week.Start
and task.assignment_Start <= week.end

Open in new window


Must lie in a week:
Select Week, Sum(Amount) from tasks
inner join TablesWeek
on tasks.assigment_Start  >= Week.Start
and task.assignment_Start <= week.end
and tasks.assigment_End  >= Week.Start
and task.assignment_End <= week.end

Open in new window

0

Featured Post

Veeam Task Manager for Hyper-V

Task Manager for Hyper-V provides critical information that allows you to monitor Hyper-V performance by displaying real-time views of CPU and memory at the individual VM-level, so you can quickly identify which VMs are using host resources.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

There have been several questions about Large Transaction Log Files in SQL Server 2008, and how to get rid of them when disk space has become critical. This article will explain how to disable full recovery and implement simple recovery that carries…
In this article I will describe the Backup & Restore method as one possible migration process and I will add the extra tasks needed for an upgrade when and where is applied so it will cover all.
This course is ideal for IT System Administrators working with VMware vSphere and its associated products in their company infrastructure. This course teaches you how to install and maintain this virtualization technology to store data, prevent vuln…
Have you created a query with information for a calendar? ... and then, abra-cadabra, the calendar is done?! I am going to show you how to make that happen. Visualize your data!  ... really see it To use the code to create a calendar from a q…

719 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question