人に聞けない痔の悩み、これでスッキリ >>

アクセスで重複排除後のカウントを行いたいのですが・・。例えば、TEST1テーブルのaaaカラムの重複排除後のカウントを知りたい場合、一般的には、SELECT COUNT(DISTINCT aaa) FROM TEST1となると思いますが、アクセスではどのような記述ができるのでしょうか?宜しくお願いします。

A 回答 (1件)

サブクエリを使いましょう。


SELECT Count(*) AS 件数
FROM [SELECT DISTINCT aaa FROM TEST1]. AS T
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qアクセスのクエリ 重複数のカウント方法

アクセスのクエリ内で、複数の重複がありますが、それぞれの重複カウントをしたいのですが、その式をご存知の方、教えていただけないでしょうか?

Aベストアンサー

#3さんの回答は、標準的なSQLです、Access2000では通りませんでした。Accessではorder by、havingで別名が使えません。最新バージョンで試した訳ではないので、今は使えるようになっているかもしれませんが、念のため書き直すとこうなります。

【SQL例1】
select 名前,count(*) as cnt from 表名
group by 名前
order by count(*) desc

【SQL例2】
select 名前,count(*) as cnt from 表名
group by 名前
having count(*)>1
order by count(*) desc

QACCESS 重複データを1つだけ表示したい(初心者です)

ACCESSで複数のフィールドに全く同じレコードが複数存在します
(例)
フィールド1  フィールド2  フィールド3
愛知      田中      12
愛知      田中      12
愛知      田中      12
三重      山本      23
三重      山本      23
岐阜      鈴木      33
岐阜      鈴木      33

もともと他のデーターベースからCSVで落としたものをインポートしているので、データの存在自体はどうしようもありませんが、これらの重複しているデータを1件だけ表示したいのです。つまり
(例)
フィールド1  フィールド2  フィールド3
愛知      田中      12
三重      山本      23
岐阜      鈴木      33

どのようにすればよいでしょうか。

Aベストアンサー

クエリにて[固有のレコード]プロパティーを[はい]にします

QACCESSのフィールドのデータを無重複に抽出する

お世話になります。
ACCESS2000を使用しています初心者です。
あるフィールドに入力されているデータを無重複に抽出したいのですが、簡単で良い方法を教えて下さい。
エクセルでの無重複抽出はできるのですが、データ数が34万件くらいあり、推測される結果は2万件くらいになります。


例)
商品
A
B
C
A
B
D
C

結果
A
B
C
D

よろしくお願いします。

Aベストアンサー

こんにちは。
まず、テーブルを基にしてクエリを作ってください。
作り方は、データベースウインドウで
「クエリ」に切り替えて、
「新規作成」ボタンを押して、「デザインビュー」を選択します。

クエリのデザイン画面が開いたら、データの入っているテーブルを追加してください。

テーブルのフィールド名が画面上半分に出ていますから、
このなかから、商品名のフィールドをダブルクリックします。
すると、画面下半分のデザイングリッドに、商品名フィールドが追加されます。

ここでツールバーの「Σ(集計)」ボタンを押してください。
さきほどのデザイングリッドに「集計:グループ化」という行が現れます。

表示-データシートビュー
で、画面を切り替えると、すべての商品名が名寄せ(グループ化)された状態で表示されているかと思います。

QAccessのRefresh・Requery・Repaintの違い

Requeryはもう一度ソースレコード(テーブル)を読み込むようです。このとき、テーブルの先頭レコードに移動してしまいます。
Refreshは最新のレコード(テーブル)を再表示するような気がします。レコードの移動は起こらない気がします。
Repaintは、VBAでキャプションなどを変更したとき使っています。
でも、よくわかっていません。
どんなときにどんなメソッドを使えばいいのでしょうか?
詳しい方、よろしくお願いいたします。

Aベストアンサー

たびたびすみません。
調べてたらこんなのがでてきました。
http://www.nurs.or.jp/~ppoy/access/access/acF007.html

参考URL:http://www.nurs.or.jp/~ppoy/access/access/acF007.html

QACCESS クエリで、グループ化したものをカウントしたい

SQLでなくクエリで、グループ化したものをカウントしたいのですが、クエリを2個作ればよいのはわかるのですが、これを1つのクエリで作るのは可能でしょうか?

現状:
クエリ1 グループ化
クエリ2 クエリ1の結果をカウント

あまりにクエリを作り過ぎる為、今後の向上の為にと思い、質問します。
よろしくお願いします。

Aベストアンサー

>>Sum(1/DCount("*","テーブル名","グループ='" & [グループ] & "'"))
>が理解できませんでした。(再現もできませんでした)
質問にテーブルの情報がなかったのでこのように書きました

グループとは質問の1段目のクエリでグループに指定したフィールドの名前です

グループAが3レコード、Bが2レコードあれば

1/3+1/3+1/3+1/2+1/2=2

という結果が得られます

QAccess2007でSQLの複数列副問い合わせについて

VB2005+Access2007を使用しております
SQL文の複数列副問い合わせについて教えて下さい

検索をしても他のデータベースのものばかりヒットし、解決できません

SELECT *
FROM Uriage
WHERE
(Date, DateID) = (SELECT Date, DateID FROM Uriage WHERE NAME = 'cup')

これを実行すると
「メイン クエリの FROM 句の予約語 EXISTS を使用しないフィールド
を複数返すサブクエリを作成しました。サブクエリのSELECT ステート
メントを変更し、1 つのフィールドだけを指定してください。」
というエラーがでてしまいます。


形をかえ、

SELECT *
FROM Uriage
WHERE
Date = (SELECT Date FROM UriageList WHERE NAME = 'cup')
AND
DateID =(SELECT DateID FROM UriageList WHERE NAME = 'cup')

これを実行すると、
「このサブクエリでは 1 つのレコードしか返せません。」
というエラーがでてしまいます。

また、

SELECT *
FROM Uriage
WHERE
(Date) IN (SELECT Date FROM UriageList WHERE NAME = 'cup')
AND
(DateID) IN (SELECT DateID FROM UriageList WHERE NAME = 'cup')

を実行したところ、
エラーはでないものの、抽出結果が異なるものが出てきてしまいました。


これを解決するにはどのようにしたらよいのでしょうか?
よろしくお願いいたします。

なお、某知恵袋にも同様の質問をしてしまいましたが、
回答者様への回答や追加質問が出来ず、
こちらに再質問させて頂きました。申し訳ございません。

VB2005+Access2007を使用しております
SQL文の複数列副問い合わせについて教えて下さい

検索をしても他のデータベースのものばかりヒットし、解決できません

SELECT *
FROM Uriage
WHERE
(Date, DateID) = (SELECT Date, DateID FROM Uriage WHERE NAME = 'cup')

これを実行すると
「メイン クエリの FROM 句の予約語 EXISTS を使用しないフィールド
を複数返すサブクエリを作成しました。サブクエリのSELECT ステート
メントを変更し、1 つのフィールドだけを指定してください。」
というエ...続きを読む

Aベストアンサー

知恵袋にも回答しましたが、
INNER JOIN を使えばどうでしょうか。
副問い合わせより高速にできる可能性が大です。

SELECT Uriage.Date, Uriage.DateID
FROM
Uriage INNER JOIN UriageList
ON Uriage.Date = UriageList.Date AND Uriage.DateID = UriageList.DateID
WHERE UriageList.NAME = 'cup';

Qアクセス関数を使って、重複チェック

アクセス2003を使っています。
ある講座の受講者のデータが入っているデータベースを作ろうと考えています。
その講座には受講者が実際に重複して受講する人がいます。
重複して受講しているかどうかを、「選択クエリ上の関数」を使って調べたいです。

具体的には
 氏名  受講月
山田太郎 2009/1
佐藤一郎 2009/2
山田次郎 2009/3
佐藤一郎 2009/4
というデータベースがあり、佐藤一郎が重複しています。(受講月は重複していません)
これをクエリを使って、
 氏名  受講月
山田太郎 2009/1
佐藤一郎 2009/2 重複
山田次郎 2009/3
佐藤一郎 2009/4 重複
というクエリを作りたいです。

どうすれば良いでしょうか?

Aベストアンサー

DCount 関数
http://office.microsoft.com/ja-jp/access/HA012288171041.aspx

> 重複:DCount("氏名","テーブル")

重複:DCount("*", "テーブル名", "氏名 = '" & [氏名] & "'")

こう言う事でしょ?
サンプルから、どう使うものか、予測できないと、先々覚えていくのが辛いよ

QACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ

ACCESSで空白のデーターをクエリで判定/識別する方法を教えてください。
EXCELでは空白を""で判定/識別表していますがACCESSではどうなるのでしょうか。

下の例はフィールドに試験番号があればその番号を、空白なら”欠席”と表示しようとしています。
IIf(([試験番号]="空白の場合何を入れる?"),[試験番号],"欠席")

Aベストアンサー

もうひとつの書き方は
式1: IIf([試験番号] Is Not Null,[試験番号],"欠席")
第2、第3引数の、質問の順序にあわせるとこうなる。

QACCESS クエリ抽出する際、重複しているフィールドを取り除きたい

テーブルA
テーブルB
があり、そのクエリ
クエリA
クエリB
を作ってあります。


クエリA
フィールドA1
フィールドA2

クエリB
フィールドB1
フィールドB2

結合は、クエリAのフィールドA1 ⇒ クエリBのフィールドB1 としており、
実行結果としては、以下のようになって抽出されます。


クA:フィA1|クA:フィA2|クB:フィB1|クB:フィB2
a       |J      |(空)    |(空)
a       |J      |(空)    |(空)
a       |K      |(空)    |(空)
b       |L      |(空)    |(空)
b       |L      |(空)    |(空)
b       |M      |(空)    |(空)
b       |M      |(空)    |(空)
c       |X      |c      |P
c       |X      |c      |P
c       |X      |c      |Q
c       |X      |c      |Q
c       |X      |c      |Q
d       |Y      |d      |R
d       |Y      |d      |S
d       |Y      |d      |S


これを踏まえて、
重複を除いた形での実行結果として得たいパターンは以下の2つです。

<パターン(1)>
クA:フィA1|
a       |
b       |
c       |
d       |
※他のフィールドは必要無し。

<パターン(2)>
クA:フィA1|クA:フィA2|クB:フィB1|クB:フィB2
a       |J      |(空)    |(空)
a       |K      |(空)    |(空)
b       |L      |(空)    |(空)
b       |M      |(空)    |(空)
c       |X      |c      |P
c       |X      |c      |Q
d       |Y      |d      |R
d       |Y      |d      |S
※4フィールドが同一になるところだけ除きたい


恐縮なのですが、この2パターンのSQLをご教授いただけると助かります。
よろしくお願い致します。

テーブルA
テーブルB
があり、そのクエリ
クエリA
クエリB
を作ってあります。


クエリA
フィールドA1
フィールドA2

クエリB
フィールドB1
フィールドB2

結合は、クエリAのフィールドA1 ⇒ クエリBのフィールドB1 としており、
実行結果としては、以下のようになって抽出されます。


クA:フィA1|クA:フィA2|クB:フィB1|クB:フィB2
a       |J      |(空)    |(空)
a       |J      |(空)    |(...続きを読む

Aベストアンサー

肝心のテーブルの情報がありませんが
適当に想像して回答します

パターン1はテーブルAからフィールドA1を重複なしに取り出すだけですね
SELECT DISTINCT thubanA.A1
FROM thubanA;

パタ-ン2も単に今のクエリから重複を除いてやるだけでいいのでは

SELECT DISTINCT thubanA.A1, thubanA.A2, thubanB.B1, thubanB.B2
FROM thubanA LEFT JOIN thubanB ON thubanA.A1 = thubanB.B1;

QAccess 条件に合うレコード数をカウントできません

下のようなクエリ結果を出す方法がわかりません。
Excelのcountif()のような関数はないのでしょうか?

●テーブル
日付 名前  売上
1/1 山口高   0
1/1 浅野   500
1/1 新美  1,000
1/2 山口高   0
1/2 浅野  1,000
1/2 新美  2,000
1/3 山口高 3,000
1/3 浅野  2,000

●クエリ: 1,000円以上売り上げた日数は?
   出勤数 1,000円以上の日数
山口高 3    1
浅野  3    2
新美  2    2

抽出条件: >= 1000
集計: カウント
としても、出勤数と同じ値で出力されてしまいます。
●正しくない現状
   出勤数 1,000円以上の日数
山口高 3    3
浅野  3    3
新美  2    2


1,000円以上の日数だけを抽出するクエリを、別に用意しなければならないのでしょうか?

Aベストアンサー

まず、「名前」の集計欄は「グループ化」、「日付」の集計欄は「カウント」のままでOKとします。
で、「売上」が1000円以上の時に"1"とするフィールドを設けて、内容を下記のようにします。

フィールド: → 「 1000以上日数: IIf([売上]>=1000,1,0) 」
集計: → 「合計」

このフィールドは[売上]が1000以上のときに"1"が立ちますので、それの合計を求めることで日数の合計とします。

こんな感じでしょうか(^^)


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング