2017-07-02 43 views
0

访问2013 SQL。计算由其他值分组的不同对值

我有2个表,我加入了一个共享的“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 

感谢。

+0

样本数据和预期的结果将真正帮助。举个例子,你说你想用'id1'和'id2'来分组。但是,您实际上显示的是按“fld1”和“fld2”分组的数据。什么是独特的组合计数应该是。 –

+0

目前还不清楚这两个表是如何相关的。我想他们有一个共同的'id'?这将是非常罕见的,但是'id2',table1中唯一的其他字段似乎不是链接。我有权怀疑这两张表中的“id”是什么吗? –

+0

您的示例数据没有意义。没有表格有两列'fld1','fld2'。 –

回答

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; 
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; 

我不知道你所说的“独特组合”的意思。

+0

嗨戈登。我想计算表2中fld1和fld2的唯一组合。我将更新以提供示例数据和预期结果集。对不起,我忘了。 – user2184214

+0

谢谢戈登。我该怎么做才能让你得到你的帮助? – user2184214

+0

@ user2184214。 。 。你应该鼓励并接受你认为值得的答案。你应该*不要*肆意上传答案 - 他们会被堆栈溢出拒绝。谢谢你的感激。干杯。 –