大規模な生産システム用の単純なタイムシート モジュールに取り組んでおり、ユーザーに情報のテーブルを表示する必要があります。作業する次のテーブルがあります。
TimeRecords
ID
WorkerID
AssyLineID
Station
Sequence
NbrHours
DateSubmitted
Workers
ID
Name
AssyLines
Name
データ入力時、作業者ごとに AssyLine によって時間が入力されます。1 人の作業員が、1 日のうちに 2 つ以上の異なるステーションで作業する場合があります。Sequence 値は、データ入力時に入力された名前の順序に基づいて割り当てられます。
ここで、すべての組立ラインとすべての作業者のデータを次の形式で返したいと考えています。
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) 特定の作業者の行は、最も多くの時間を記録した組立ラインから順に、その組立ラインの順序でグループ化する必要があります。特定のワーカーのすべてのエントリを 1 つの行に統合してユーザーに表示することを計画していますが、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
明らかに、これには多くの要望が残されています。ワーカー エントリはグループ化されず、ワーカーの全体的な合計はありません。
誰でも私がこれを正しくするのを手伝ってくれますか? ビューではなく Stored Proc でこれを行う必要があると考えています...
ありがとう、デイブ