新手求助:在Access SQL中实现SOURCE_ACCOUNT_ID的COUNT DISTINCT
嘿,我来帮你搞定这个Access SQL的问题!
首先得先理清你的需求:你已经有一个从[SQLAExport DEC 2017]表提取字段的查询,现在想给这个查询加上唯一SOURCE_ACCOUNT_ID的计数,对吧?你自己写的子查询思路是对的,只是没找对和原查询整合的方式,而且还有个小细节要注意——字段名得统一(你子查询里写的SOURCE_ACC_ID和原表的SOURCE_ACCOUNT_ID要保持一致,不然会报错)。
两种常见场景的解决方案:
场景1:在原查询的每一行旁,显示整个数据集里唯一账号的总数
如果你想保留原查询的所有字段,同时在每一行都显示全局的唯一SOURCE_ACCOUNT_ID数量,直接把你的子查询作为一个标量子查询放到SELECT列表里就行:
SELECT [SQLAExport DEC 2017].SOURCE_ACCOUNT_ID, [SQLAExport DEC 2017].SAP_ACC, [SQLAExport DEC 2017].SAP_CC, [SQLAExport DEC 2017].SAP_PRODUCT, -- 这里放统计唯一账号的子查询 (SELECT Count(*) FROM (SELECT DISTINCT SOURCE_ACCOUNT_ID FROM [SQLAExport DEC 2017])) AS DistinctAccountCount FROM [SQLAExport DEC 2017];
场景2:按某个维度分组,统计每组内的唯一账号数量
如果你是想按比如SAP_CC或者SAP_PRODUCT分组,统计每个分组下的唯一SOURCE_ACCOUNT_ID数量,那得用嵌套子查询先去重再分组:
SELECT grouped_data.SAP_CC, Count(*) AS DistinctAccountsPerCC FROM ( -- 先按分组字段+账号去重 SELECT DISTINCT SAP_CC, SOURCE_ACCOUNT_ID FROM [SQLAExport DEC 2017] ) AS grouped_data GROUP BY grouped_data.SAP_CC;
操作步骤:
- 打开你的
Query VL,切换到SQL视图(在设计视图顶部的「视图」菜单里选「SQL视图」) - 把原SQL替换成上面对应场景的代码(记得根据你的实际需求选场景1或2)
- 点击运行按钮,就能看到新增的计数列正常显示数值了
另外补充下:Access的设计视图确实没法直接通过「Criteria」区域实现COUNT DISTINCT,必须手动写SQL语句,你之前的尝试方向是对的,只是差了整合的细节~
内容的提问来源于stack exchange,提问作者CGG
相关产品推荐
相关产品推荐

