プロが教える店舗&オフィスのセキュリティ対策術

Accessを使って以下のように業務担当者の集計をしたいのですが、どのように
クエリを作成していけばいいのか、よくわかりません。うまい解決がおわかり
の方、ご教授いただけないでしょうか?

個々の業務は一人か二人の担当者で実施します。業務ごとに主担当者IDと副担
当者IDが記録されていますが、副担当者はつかない場合があります。つまり、
次のような感じです。担当者IDは実際は数字で、別の担当者名簿にリンクして
います。現在はID=1を担当なしにしていますが、そのへんはまだいじれます。

[業務担当]
業務 主 副
1  a b
2  a
3  c
4  c b
5  b a
6  a c
7  a b
8  c

ここで、各担当者が、単独で業務を行なった回数、複数担当での主担当者とし
て行なった回数、副担当者として行なった回数、を集計して以下のような結果
を得たいのです。

担当者 単独 主 副
a   1  3 1
b   0  1 3
c   2  1 1

最初は、単独と複数で別々のクエリで抜き出してから、さらに集計のクエリに
かけるのかなとか考えたのですが、これだけのことにそんなに複雑な処理がい
るとも思えません。何かすっきりした解決がありそうなんですが。

よろしくお願いいたします。

A 回答 (2件)

SELECT t.担当者,


(select count(*) from 業務担当 as g where g.主=t.担当者 and g.副 is null) AS 単独,
(select count(*) from 業務担当 as g where g.主=t.担当者 and g.副 is not null) AS 主,
(select count(*) from 業務担当 as g where g.副=t.担当者) AS 副
FROM 担当者 AS t;

こんなかんじでしょうか?
    • good
    • 0
この回答へのお礼

適切な回答ありがとうございます。またお礼が遅くなって申し訳ありません。
しばらく手元で試せる環境を作れなかったもので。

回答をいただいた結果、うまく集計のクエリを作成することができました。
やはりSQLをちゃんと勉強してこれくらい書けるようにならないといけないですね。

で、本当に申し訳ないのですが、もう一点お尋ねしていいでしょうか。
[業務担当]の表には、実際にはその業務日も含まれています。
業務日の範囲を限定して(例えばyyyy/mm/ddからyyyy/mm/dd)、
同じ集計をするには、この集計クエリで、where の中身をいじればいい
というのはわかるのですが、それだと3箇所に同じ記述が必要になりますよね?

まず、[業務担当]の表の中から、該当日だけを抽出して、それを元に集計するには、
一つのSQLでどう書けばいいのでしょう?

あつかましいお願いですが、よろしくお願いいたします。

お礼日時:2002/01/29 13:07

追加の質問に対する答えですが、わたしの知る限りでは、


where句に3回同じ記述をするしかないと思います。
お役に立てず申し訳ありません。
    • good
    • 0
この回答へのお礼

そうでしたか。しかたないですね。
それより、役に立たないなんてとんでもない。
非常に助かりました。ありがとうございます。
今後もよろしくお願いします。

お礼日時:2002/02/04 10:34

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!