2017-11-02 5 views
0

これを正確にフレーズする方法がわからないので、やりたいことがうまくいけば意味をなさないでしょう。アクセスクエリ - 行ではなく列の一致するすべてのレコードをカウントするフィールドを作成するにはどうすればよいですか?

私は、レコード内の値と一致するクエリ結果の一致する値の合計数をフィールドに表示するように、アクセスでクロス集計クエリを使用しています。たとえば:[Unit_Total]については

[ID]  [Name]  [Unit]  [Unit_Total] 
    1   A   M1   2 
    2   B   M1   2 
    3   B   M2   1 

、私は[単位]の値がクエリ結果に表示された合計回数をカウントします。

私はこれがかなり簡単にできるはずです。私はしばらくの間、さまざまな表現を構築しようとしましたが、それを理解することはできませんでした。

答えて

1
select t.ID, 
     t.Name, 
     t.Unit, 
     (select count(*) from [table] t1 where t1.Unit = t.Unit) as Unit_Total 
from [table] t 

これはすばやく読みやすい方法です。パフォーマンスが問題になる場合は、テーブルを集約して自分自身に戻すことができます。

select t.ID, 
     t.Name, 
     t.Unit, 
     t2.Unit_Total 
from [table] t 
join (
    select t.Unit, count(*) as Unit_Total 
    from [table] t1 
    group by t.Unit 
) t2 
    on t2.Unit = t.Unit 
関連する問題