1

Count (Distinct column)MSAccessでは機能が使えないようです。以下のようなデータと期待される結果があります。

必要な結果をもたらすことができるMSAccessクエリを探しています。

データ

ID     Name     Category    Person  Office
1      FIL       Global     Ben     london
1      FIL       Global     Ben     london
1      FIL       Overall    Ben     Americas
106   Asset      Global     Ben     london
156   ICICI      Overall    Rimmer  london
156   ICICI      Overall    Rimmer  london
188   UBS       Overall     Rimmer  london
9    Fund      Global       Rimmer  london

期待される結果

Person  Global_Cnt  Overall_Cnt    
Ben          2         1
Rimmer       1         2
4

4 に答える 4

1

サブクエリを使用して、テーブルから個別の値を選択します。

親クエリでは、、、およびはカテゴリごとに GROUP BY Person個別の式を使用します。Null以外の値のみをカウントするため、を使用して対象のカテゴリに1を返し、それ以外の場合はNullを返します。 Count()Count()IIf()

SELECT
    sub.Person,
    Count(IIf(Category = 'Global', 1, Null)) AS Global_Cnt,
    Count(IIf(Category = 'Overall', 1, Null)) AS Overall_Cnt
FROM
    (
        SELECT DISTINCT ID, Category, Person
        FROM YourTable
    ) AS sub
GROUP BY sub.Person;

どのフィールドがあなたのユニークな値を識別するのかわからなかったので、、、、を選択しIDました。クエリの結果セットは、要求したものと一致します。実際のデータに合わない場合は、フィールドリストを変更してください。CategoryPersonSELECT DISTINCT

于 2012-10-04T04:56:54.743 に答える
0

Microsoft Accessでクエリを作成する場合、個別の値または一意の値のみを返したい場合があります。クエリのプロパティシートには、「一意の値」と「一意のレコード」の2つのオプションがあります。

DISTINCTとDISTINCTROWで同じ結果が得られる場合もありますが、大きな違いがあります。

DISTINCT DISTINCTは、SQL文字列にリストされているフィールドのみをチェックしてから、重複する行を削除します。DISTINCTクエリの結果は更新できません。これらはデータのスナップショットです。

DISTINCTクエリは、SummaryクエリまたはTotalsクエリ(GROUP BY句を使用したクエリ)に似ています。

一方、 DISTINCTROW DISTINCTROWは、クエリされているテーブル内のすべてのフィールドをチェックし、(選択されたフィールドだけでなく)レコード全体に基づいて重複を排除します。DISTINCTROWクエリの結果は更新可能です。

続きを読む...

于 2012-10-04T04:31:02.773 に答える
0
select count(column) as guessTable
from
(
    select distinct column from Table
)
于 2015-03-20T10:47:18.637 に答える
0

MSAccess-Engineはサポートしていません

 SELECT count(DISTINCT....) FROM ...

あなたはこのようにそれをしなければなりません:

 SELECT count(*) 
 FROM
 (SELECT DISTINCT Name FROM table1)

その少しの回避策...あなたはDISTINCTの選択を数えています。

于 2015-03-20T10:59:55.710 に答える