【发布时间】:2017-06-23 18:01:21
【问题描述】:
好的,所以我有这 3 个表(OrderRouting、TimeTicketDet、WorkCntr):
右边的第四张表是我需要输出的样子。
我只需要前 2 个表中的列,但由于这 2 个表中的 WorkCntr 列不匹配,因此我必须引入 WorkCntr 表以将它们绑定起来。这是一个多条件连接,其中 JobNo 和 WorkCntr 需要匹配每个相应的行。我需要返回 OrderRouting 表中的每条记录,并且需要对 TotEstHrs 和 ManHrs 列求和
所以对于第一行,我们可以看到 JobNo 20166-02 用于切割,估计为 2.25 小时,总 ManHrs 是 1.15、.75 和 .25 的总和
这是我到目前为止尝试的方法,但没有成功:
SELECT t.JobNo, w.ShortName, SUM(o.TotEstHrs) AS 'Estimated Hours',
SUM(t.ManHrs) AS 'Man Hours'
FROM TimeTicketDet t LEFT JOIN WorkCntr w ON t.WorkCntr = w.WorkCntr RIGHT
JOIN OrderRouting o ON t.JobNo = o.JobNo and w.ShortName = o.WorkCntr
WHERE t.JobNo LIKE '20040%'
AND w.ShortName IN ('Cutting', 'Framing', 'Assembly', 'Grinding',
'Painting', 'Glazing', 'Locknprep', 'Packaging')
GROUP BY t.JobNo, w.ShortName
ORDER BY t.JobNo, w.ShortName;
它返回正确的 JobNo、ShortName、ManHrs 数量,但 OrderRouting 中的行缺失并且 TotEstHrs 值错误
我正在使用 SQL Server Management Studio
【问题讨论】:
-
为什么结果表中的
TotalEstHrs值与OrderRouting 表中的值不同? (即用于取景和分级) -
哎呀,这只是一个错字,匆忙整理了这些表格。我已对其进行了更正,以免混淆未来的读者
标签: sql sql-server