1

我正在尝试创建 SQL 查询以显示一个项目下的任务以及每个月在每个任务上花费的小时数?在此处输入图像描述

询问

SELECT 
  Projects.projectName, Tasks.taskName, 
  billingsTimes.taskID, billingsTimes.actualTotalTime
FROM Projects 
INNER JOIN Projects_tasks ON Projects.projectID = Projects_tasks.projectID 
INNER JOIN Tasks ON Projects_tasks.taskID = Tasks.taskID 
INNER JOIN billingsTimes ON Tasks.taskID = billingsTimes.taskID
WHERE (Projects.projectID = '') 
4

1 回答 1

3

听起来你只需要以下内容:

select p.projectname,
    t.taskname,
    bt.taskid,
    bt.TotalTime
from projects p
left join projects_tasks pt
    on p.projectid = pt.projectid
left join tasks t
    on pt.taskid = t.taskid
left join
(
    select SUM(bt.actualTotalTime) TotalTime, bt.taskid
    from billingtimes bt
    group by bt.taskid
) bt
    on t.taskid = bt.taskid

如果您提供有关每月日期存储位置的更多详细信息,则可以将其更改为按月分组,以便为​​您提供每个任务的每月总计。

编辑#1,如果您使用dateOfService来确定服务的执行时间并且您想按月/年分组,那么您可以使用以下内容:

select p.projectname,
    t.taskname,
    bt.taskid,
    bt.TotalTime,
    bt.ServiceMonth,
    bt.ServiceYear
from projects p
left join projects_tasks pt
    on p.projectid = pt.projectid
left join tasks t
    on pt.taskid = t.taskid
left join
(
    select SUM(bt.actualTotalTime) TotalTime, bt.taskid, 
        datepart(month, bt.dateofService) ServiceMonth,
        datepart(year, bt.dateofService) ServiceYear
    from billingtimes bt
    group by bt.taskid, datepart(month, bt.dateofService), 
        datepart(year, bt.dateofService)
) bt
    on t.taskid = bt.taskid
于 2013-01-29T21:50:21.410 回答