ACCESS2000総合相談所

このエントリーをはてなブックマークに追加
327質問です!
お世話になります。
ACCESS97を使っています。
次のようなクエリーは可能なのでしょうか?

 品   数
--------------
みかん  5
みかん  3
りんご  1
なし   4

というテーブル「A」に対して、クエリー式
select 品,sum(数)as total from A group by 品
によって,

品 total
--------------
みかん 8
りんご  1
なし   4

というクエリーが得られるはずです。

さて、ある理由があって、このクエリーの中に品の種類数を各行に記入したいのですが、
どのようなクエリー式を書けばいいのでしょう?
すなわち、

 品   total 種類
-----------------------
みかん  8   3
りんご  1   3
なし   4   3

のような形にしたいのです。(品物の種類は3種類ですので)

しかし,

SELECT 品, Sum(数) AS total, (select count(select distinct s.品 from A s)) AS 種類
FROM A
GROUP BY 品;

のような式とかいろいろやってみたのですがうまくいかず,
結局,


-------
みかん
りんご
なし

のようなテーブル「B」をselect distinct で作って,
SELECT 品, Sum(数) AS total, (select count(s.品) from B s) AS 種類
FROM A
GROUP BY 品;

のような式を作ってやりすごしました.

別テーブルを作らずにスマートな一つのSQL式にできないものでしょうか?
初心者なのでよろしくお願いします.