计算由其他值分组的不同值对

时间:2017-07-02 20:09:13

标签: sql ms-access

访问2013 SQL。

我有两张桌子,我加入了共享的#34; ID"字段。

我想要一个按书和名称分组的不同fld1 + fld2值的计数。

如何在Access 2013 SQL中执行此操作。尝试2小时后,我没有任何产生语法错误或其他聚合错误的信息。

示例数据:

Table1
ID, Name
1, "John"
2, "John"
3, "John"
1, "Tom"
3, "Tom"
3, "Jack"


Table2
ID, Book, Fld1, Fld2
1, "A", 1, 1
2, "A", 1, 2
2, "A", 1, 2
1, "B", 1, 1
2, "B", 1, 3
3, "B", 1, 3

预期结果集:

Book, Name, Count()
A, John, 2
A, Tom, 1
A, Jack, 0
B, John, 2
B, Tom, 2
B, Jack, 1

感谢。

2 个答案:

答案 0 :(得分:1)

在聚合之前使数据不同:

select id2, id3, count(*)
from
(
  select distinct t1.id2, t2.id3, t2.fld1, t2.fld2
  from table1 t1
  join table2 t2 on t2.id = t1.id
) t
group by t.id2, t.id3;

答案 1 :(得分:0)

这似乎是一个基本的JOINGROUP BY

select t2.fld1, t2.fld2, count(*)
from t1 inner join
     t2
     on t1.id = t2.id
group by t2.fld1, t2.fld2;

我不确定“独特组合”是什么意思。