2

私はこれに頭を悩ませるのに苦労しています、どんな援助も大歓迎です。

1つ以上のテーブルに結合する2つのselectステートメントがあります。

SELECT repinfo.repName, SUM(callstatssummary.CallsIn)
FROM repinfo
LEFT JOIN callstatssummary
ON repinfo.isaacID = callstatssummary.IsaacID AND callstatssummary.ShiftDate >= '2013-02-10' AND callstatssummary.ShiftDate <= '2013-02-16'
GROUP BY repinfo.repName;

最初のステートメントの出力は、repinfoテーブル内の全員のリストであり、その週にかかった合計呼び出し数が含まれています。左結合を使用して、電話に出なかった人を結果に含めました。

SELECT repinfo.repName, SUM(`1036`.afterRgu) - SUM(`1036`.priorRgu)
FROM repinfo
JOIN reporders
ON repinfo.repID = reporders.oRep
JOIN `1036`
ON reporders.workOrder = `1036`.workOrder AND `1036`.entryDate >= '2013-02-10' AND `1036`.entryDate <= '2013-02-16' AND `1036`.afterRgu >= `1036`.priorRgu
GROUP BY repinfo.repName;

2番目のステートメントは、各人がその週に販売した製品の数を出力します。repinfoテーブルには、作業指示に一致するようにrepordersテーブルと結合する代表に関する情報が含まれています。1036テーブルには、注文に関する詳細情報があります。

私はこのようなものを出力しようとしています-基本的に2つのselectステートメントの出力を組み合わせます:

|  repName  |  SUM(callstatssummary.CallsIn) |  SUM(`1036`.afterRgu) - SUM(`1036`.priorRgu)  |
______________________________________________________________________________________________
| Bruce W   | 41                             | 13                                            |
| Cathy M   | 84                             | 17                                            |
| Jonah S   | NULL                           | 29                                            |

助言がありますか?

4

1 に答える 1

3

これらのステートメントを組み合わせる1つの方法は、それぞれを派生テーブル/インラインビューにして、に結合することrepNameです。

注意:repinfo2人の担当者が同じ名前を持つことができる場合は、明らかに担当者ID番号(またはテーブルの主キーと呼ぶもの)で参加することをお勧めします。

select 
  r.repName, c.sumCallsIn, o.sumProdSold
from
  repinfo r
  left join (
    SELECT repinfo.repName, 
           SUM(callstatssummary.CallsIn) sumCallsIn
    FROM   repinfo
           LEFT JOIN callstatssummary
           ON repinfo.isaacID = callstatssummary.IsaacID 
           AND callstatssummary.ShiftDate >= '2013-02-10' 
           AND callstatssummary.ShiftDate <= '2013-02-16'
    GROUP BY repinfo.repName
  ) c
  on c.repName = r.repName
  left join (
    SELECT repinfo.repName, 
           SUM(`1036`.afterRgu) - SUM(`1036`.priorRgu) sumProdSold
    FROM   repinfo
           JOIN reporders
           ON repinfo.repID = reporders.oRep
           JOIN `1036`
           ON reporders.workOrder = `1036`.workOrder 
           AND `1036`.entryDate >= '2013-02-10' 
           AND `1036`.entryDate <= '2013-02-16' 
           AND `1036`.afterRgu >= `1036`.priorRgu
    GROUP BY repinfo.repName
  ) o
  on r.repName = o.repName
order by r.repName;
于 2013-02-22T23:15:06.377 に答える