SQL:我如何计算MS ACCESS中的不同记录

时间:2012-08-15 07:09:17

标签: sql ms-access

有人可以帮我解决SQL命令吗? 我有一个表(tbl_sActivity),其数据低于数据

  

user_id | client_id | act_status |
  1 | 7 |   冷|
  1 | 7 |   dealed |
  22 | 5 |   冷|
  1 | 6 |   冷|
  1 | 6 |   暖|
  1 | 6 |   热点|
  1 | 6 |   dealed |
  1 | 8 |   暖|
  1 | 8 |   dealed |
  21 | 4 |   暖|
  21 | 4 |   dealed |

输出应该是

  

user_id | Count_C_id |
  1 |   3 |
  21 |   1 |
  22 |   1 |

我从网上搜索并了解到MS ACCESS无法使用COUNT(DISTINCT)功能..所以我在这个阶段停留了好几天.. 非常感谢你。

2 个答案:

答案 0 :(得分:15)

试试这个。 “技巧”是首先获得子查询以获取用户和客户端ID的所有不同组合,然后按用户进行分组:

SELECT
    user_id
  , COUNT(*) AS count_distinct_clients
FROM
    ( SELECT DISTINCT
          user_id, 
          client_id
      FROM tbl_sActivity
    ) AS tmp
GROUP BY
    user_id ;

答案 1 :(得分:0)

建议不使用子查询而进行查询。

请找到以下代码,该代码将比子查询更快,更准确。

//临时表

CREATE TABLE #TempStudent(userId  int, c_id int , Name  varchar(MAX) )

SELECT max(userid) as UserId, count(c_id) as C_ID from #TempStudent 
GROUP BY userId