9

Could anybody please help me on SQL command?

I have a table (tbl_sActivity) that have below data:

user_id | client_id | act_status |
1           |     7        |      cold     |
1           |     7        |    dealed   |
22         |     5        |      cold     |
1           |     6        |      cold     |
1           |     6        |     warm    |
1           |     6        |      hot       |
1           |     6        |    dealed   |
1           |     8        |     warm    |
1           |     8        |    dealed   |
21         |     4        |     warm    |
21         |     4        |    dealed   |

The out put should be

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

I've searched from net and learnt that MS ACCESS cannot use COUNT(DISTINCT) function. So I'm stuck at this stage for days.

Uwe Keim
  • 39,551
  • 56
  • 175
  • 291
Alxan
  • 295
  • 2
  • 5
  • 16

2 Answers2

15

Try this one. The "trick" is to have a subquery first to get all the distinct combinations of user and client IDs and then do the grouping per user:

SELECT
    user_id
  , COUNT(*) AS count_distinct_clients
FROM
    ( SELECT DISTINCT
          user_id, 
          client_id
      FROM tbl_sActivity
    ) AS tmp
GROUP BY
    user_id ;
ypercubeᵀᴹ
  • 113,259
  • 19
  • 174
  • 235
0

Recommendation is to make query without using sub-query.

Please find the below code which will be faster and accurate then subquery.

// Temp Table

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
vijay sahu
  • 765
  • 1
  • 7
  • 29