我有三个SQL表,包含我称之为项目项目,项目项目和添加到项目项目的小时数。在简单的连接语句之后,我有以下内容:
Project.id Item_num
1 1
1 2
1 3
2 1
etc
使用
等查询SELECT dbo.Project.id
, dbo.Item.item_num
FROM dbo.Project
JOIN dbo.Item
ON Project.id = Item.id
请注意项目表和项目表之间有相应的ID。我现在需要在item_num列的右侧添加第三个表中的小时数。第三个表格如下所示(我称之为小时):
Employee name Project.id Item_num Hours
ID 1 1 1 2
ID 2 1 1 1
我想得到的结果是:
Project.id Item_num Hours Total
1 1 3
etc
我知道我需要一些伪代码,如下所示: SUM(小时)AS总小时数 如果dbo.Project.id = dbo.Hours.Project.id AND dbo.Item.Item_num = dbo.Hours.Item_num 在查询中实现此功能的最佳方法是什么?预先感谢您对SQL nooby的任何帮助。
答案 0 :(得分:0)
我认为你需要这样的东西。
我确定您的示例中的某些列名称有误。
例如Hour
字段Project.ID
我将其重命名为ProjectID
SELECT P.id, I.item_num, SUM(H.Hours)
FROM dbo.Project P
INNER JOIN dbo.Item I
ON P.id = I.id
INNER JOIN dbo.Hours H
ON H.Item_num = I.Item_num
AND H.ProjectID = P.ID
GROUP BY P.id, I.item_num
答案 1 :(得分:0)
SELECT dbo.Project.id
, dbo.Item.item_num
, sum(Hours) as Hours
FROM dbo.Project
JOIN dbo.Item
ON Project.id = Item.id
JOIN dbo.Hours
ON Project.id = Hours.projectid -- <-- your name here
GROUP BY dbo.Project.id
, dbo.Item.item_num
这就是我想你想要的。
包含SUM()之类的聚合的规则是GROUP BY重复任何非聚合名称。在这里,您需要按项目和时间进行数小时项目。