1

多数のケースと割り当てられた一次技術者と二次技術者をリストした表があります。私が達成しようとしているのは、技術者が一次および二次技術者として働いたケースの数を集計することです。このように見えるはずです...

Technician     Primary     Secondary
John             4              3
Stacy            3              1
Michael          5              3

そのデータを取得しているテーブルは次のようになります。

CaseID, PrimaryTech, SecondaryTech, DOS

以前はこんな感じで使っていたのですが、上司から二次の件数も聞かれるようになりました…

SELECT PrimaryTech, COUNT(CaseID) as Total
GROUP BY PrimaryTech

少し検索しましたが、私の問題に対する答えが見つからないようです。

4

3 に答える 3

1
Select Tech, 
       sum(case when IsPrimary = 1 then 1 else 0 end) as PrimaryCount,
       sum(case when IsPrimary = 0 then 1 else 0 end) as SecondaryCount
from
(
  SELECT SecondaryTech as Tech, 0 as IsPrimary
  FROM your_table
  union all
  SELECT PrimaryTech as Tech, 1 as IsPrimary
  FROM your_table
) x
GROUP BY Tech
于 2013-11-11T19:15:52.833 に答える
0

このSQLFiddleで示されているように、FULL JOIN を使用して 2 つのサブクエリをグループ化できます。

SELECT Technician = COALESCE(pri.Technician, sec.Technician)
    , PrimaryTech
    , SecondaryTech
FROM 
    (SELECT Technician = PrimaryTech
        , PrimaryTech = COUNT(*)
    FROM Cases
    WHERE PrimaryTech IS NOT NULL
    GROUP BY PrimaryTech) pri
FULL JOIN
    (SELECT Technician = SecondaryTech
        , SecondaryTech = COUNT(*)
    FROM Cases
    WHERE SecondaryTech IS NOT NULL
    GROUP BY SecondaryTech) sec
    ON pri.Technician = sec.Technician
ORDER By Technician;
于 2013-11-11T19:25:33.767 に答える