2016-06-30 5 views
0

作業に参加:私は何をしたいか MU_Report表GROUPBYと私は私が働いている二つのテーブル持って一緒に

Date  | Shift | Machine | MU 
1/12/2016 | 1 | 12 | 44% 
1/12/2016 | 2 | 12 | 68% 
1/12/2016 | 3 | 12 | 78% 

Downtime_Report表

Date  | Shift | Machine | DT reason| DT_Hours 
1/12/2016 | 1 | 12 | No Work | 3 
1/12/2016 | 2 | 12 | No Resin | 2 
1/12/2016 | 2 | 12 | No Op. | 4 
1/12/2016 | 3 | 12 | No Work | 1 
1/12/2016 | 3 | 12 | No Work | 5 

がMU_Reports表に目を通す必要がありありDown_Timeテーブルを使用して、同じ日にNo Work DTの理由を取得し、シフトしてマシン化し、合計します。 出力例

Date  | Shift | Machine | MU | No_Work_Hours 
1/12/2016 | 1 | 12 | 44% |  3 
1/12/2016 | 2 | 12 | 68% |  0 
1/12/2016 | 3 | 12 | 78% |  6 

私はそう心の中でそれを保管してください両方のプログラムに非常に新しいですC#でEntity Frameworkのを使用しています。

編集:私はへの参加に変換するが、今、私は問題を持っているdowntime.Downtime_Code.Equals("R09185")がコンテキスト内に存在しないことを

 var query = from b in db.MU_Reports 
        join downtime in db.Downtime_Reports on b.Shift equals downtime.Shift into o 
        where downtime.Downtime_Code.Equals("R09185") 
        select new 
        { 
         Date = b.Date, 
         Shift = b.Shift, 
         Machine = b.Machine, 
         MU = b.MU, 
         No_Work_Hours = o.Sum(x => x.Dt_Hours) 
        }; 
+0

なぜそれがシフト2 0ですか? – dotctor

+0

whereステートメントをグループの前に1行移動するだけでしたか? –

+0

@dotctor No_Workの合計はシフト2のため0です。 – JCM

答えて

0

はこれを試してみてください -

var query = from b in db.MU_Reports 
      join downtime in db.Downtime_Reports on b.Shift equals downtime.Shift 
      where downtime.Downtime_Code.Equals("R09185") 
      group downtime by new { b.Date, b.Shift, b.Machine, b.MU } into g 
      select new 
      { 
       Date = g.Key.Date, 
       Shift = g.Key.Shift, 
       Machine = g.Key.Machine, 
       MU = g.Key.MU, 
       No_Work_Hours = g.Sum(x=>x.Dt_Hours) 
      }; 
+0

これは動作しますが、なぜ今は – JCM

+0

グループキーが指定されているのか分かりません。 –

関連する問題