我过去经常使用SAS。所以这对我试图在Access 2016中这样做很烦人。 表示例:
ID Name Sport
__________________________
99 Jack Soccer
99 Jack Jim Baseball
54 Bob Basketball
我想选择*,按ID计算ID和组,因此我可以添加一个显示重复ID的位置,因为笛卡尔匹配。
我想要的是:
ID Name Sport ID_Count
______________________________________________
99 Jack Soccer 2
99 Jack Jim Baseball 2
54 Bob Basketball 1
但是,我收到的消息是我不能按*分组,因为由于某些原因,合并摘要统计信息是不可能的,但其他情况下的笛卡儿产品是。有解决方法吗?
答案 0 :(得分:1)
SAS重新合并proc sql中的聚合结果是非标准语法。标准SQL支持窗口函数,它执行此操作。唉,MS Access不支持此标准功能。
类似的方法是聚合查询或相关子查询上的JOIN
:
select t.*,
(select count(*) from t t2 where t2.id = t.id) as id_count
from t;
ANSI标准功能是:
select t.*, count(*) over (partition by id) as id_count
from t;
答案 1 :(得分:0)
您可以在ms access 2016中尝试此操作:
Select yourtable.*, q1.ID_Count from yourtable
join (select id, count(id) as ID_Count from yourtable group by id having count(id)>1) q1
on yourtable.id = q1.id
答案 2 :(得分:0)
为什么使用*只能列出你的字段并仍然使用该组?
SELECT ID, Name, Sport, Count([ID]) as [ID_Count]
FROM TableName
GROUP BY ID, Name, Sport
我将远离尝试在MS Access中通过查询使用*。可能会使简单的任务复杂化。