我正在为大型生产系统开发一个简单的时间表模块,并且需要向用户显示信息表。我有以下表格可供使用:
TimeRecords
ID
WorkerID
AssyLineID
Station
Sequence
NbrHours
DateSubmitted
Workers
ID
Name
AssyLines
Name
在数据输入期间,AssyLine 为每个工人输入时间。一个给定的工人在一天中可能在 2 个或更多不同的工作站工作。序列值是根据在数据输入期间输入的名称顺序分配的。
现在我想以下列格式返回所有装配线和所有工人的数据:
ResultSet
Worker.ID
Worker.Name
AssyLine.Name - group returned rows by assembly line, in alphabetical order
Sequence - within each assembly line, group by sequence
NbrHours - total hours for worker for this assembly line, all stations
TotalHours - total hours for this worker across all assembly lines and stations
其他注意事项: 1) 应将给定工人的行分组在一起,从他们记录时间最多的装配线开始,按该装配线的顺序排列。我计划将给定工作人员的所有条目合并到一行中以显示给用户,如果将一个用户的所有行分组在一起,这会容易得多。如果不能这样做,我将不得不在代码中对行数据进行分组和排序......
这是我到目前为止提出的查询:
SELECT
w.ID
,w.Name
,a.Name
,tr.NbrHours
,tr.Seq
FROM
TimeRecords tr
INNER JOIN
Workers w ON
w.ID = tr.WorkerId
INNER JOIN
AssyLines a ON
a.AssyLineID = tr.AssyLineId
WHERE
tr.DateSubmitted < '2000-01-01'
ORDER BY
w.Name
,a.Name
,tr.Seq
,NbrHours DESC
显然,这还有很多不足之处。工作人员条目没有组合在一起,并且没有工作人员的总体总数。
谁能帮我解决这个问题?我想我需要用存储过程而不是视图来做到这一点......
谢谢,戴夫