0

大規模な生産システム用の単純なタイムシート モジュールに取り組んでおり、ユーザーに情報のテーブルを表示する必要があります。作業する次のテーブルがあります。

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 でこれを行う必要があると考えています...

ありがとう、デイブ

4

1 に答える 1