3

私は2つのテーブルを持っています。表 A には部門のリストが含まれており、全部で 20 あります。

画像を見る

ここに画像の説明を入力

テーブル B には、テーブル A で見つかった部門ごとに少なくとも 1 つの行が含まれており、一部の行には少数の行が含まれています。

画像を見る

ここに画像の説明を入力

私が欲しいのは、基本的にすべての部門と、フルタイムとパートタイムの人数をリストする A & B から作成された 3 番目のテーブルです。たとえば、フルタイムまたはパートタイムの数字しかないテーブル b に部門がある場合 (この例は部門 D)、この空白のままにするのではなく、テーブルに 0 (ゼロ) を表示する必要があります。

画像を見る

ここに画像の説明を入力

誰でもこれについてアドバイスできますか?

編集 たとえば、部門の 1 つに「パートタイム」がない場合、その部門のパートタイム スタッフ数は原則としてゼロになります。

4

3 に答える 3

3

PIVOTが欲しい

select *
from (tableb) s
pivot (Max(staffno) for employee_class in ([Full Time],[Part Time])) p
于 2012-10-23T13:49:45.830 に答える
0
SELECT
  A.DEPTNAME,
  (SELECT COUNT(*) FROM TABLEA A2 INNER JOIN TABLEB B ON B.TableAID = A2.TableAID WHERE B.EMPLOYEE_CLASS = 'Full time' AND A2.TableAID = A.TableAID) FullTimeNo,
  (SELECT COUNT(*) FROM TABLEA A2 INNER JOIN TABLEB B ON B.TableAID = A2.TableAID WHERE B.EMPLOYEE_CLASS = 'Part time' AND A2.TableAID = A.TableAID) PartTimeNo
FROM
  TABLEA
于 2012-10-23T13:55:12.653 に答える
0

これを試して:

select A.DEPTNAME, 
       sum(case when B.EMPLOYEE_CLASS='Full time' then B.STAFF_NO else 0) as FullTimeNo,
       sum(case when B.EMPLOYEE_CLASS='Part time' then B.STAFF_NO else 0) as PartTimeNo,
from TabA A
join TabB B on A.DEPTNAME=B.DEPTNAME
group by A.DEPTNAME
于 2012-10-23T13:49:41.807 に答える