Если база MS SQL 2005+, то
-- Эмуляция тестовых данных
with your_table as(
select 1 client_id, cast('2010-01-15 12:17:23' as datetime) dt1, cast('2010-01-19 10:12:23' as datetime) dt2, cast('2010-01-15 12:02:23' as datetime) dt3 union all
select 1 client_id, cast('2010-01-15 12:12:23' as datetime) dt1, cast('2010-01-15 12:12:23' as datetime) dt2, cast('2010-01-15 12:12:23' as datetime) dt3 union all
select 1 client_id, cast('2010-01-10 12:12:23' as datetime) dt1, cast('2010-01-20 12:12:23' as datetime) dt2, cast('2010-01-12 12:12:23' as datetime) dt3 union all
select 2 client_id, cast('2010-01-15 12:12:23' as datetime) dt1, cast('2010-01-15 12:12:23' as datetime) dt2, cast('2010-01-15 12:12:23' as datetime) dt3 union all
select 2 client_id, cast('2010-01-10 12:12:23' as datetime) dt1, cast('2010-01-15 12:12:23' as datetime) dt2, cast('2010-01-15 12:12:23' as datetime) dt3 union all
select 3 client_id, cast('2010-01-12 12:12:23' as datetime) dt1, cast('2010-01-15 12:12:23' as datetime) dt2, cast('2010-01-14 12:12:23' as datetime) dt3 union all
select 3 client_id, cast('2010-01-14 12:12:23' as datetime) dt1, cast('2010-01-15 12:12:23' as datetime) dt2, cast('2010-01-15 12:12:23' as datetime) dt3 union all
select 4 client_id, cast('2010-01-15 12:12:23' as datetime) dt1, cast('2010-01-10 12:12:23' as datetime) dt2, cast('2010-01-12 12:12:23' as datetime) dt3
)
-- Сам запрос
select convert(varchar(10), dt, 20) dt, count(distinct client_id) cnt_client
from
(select * from your_table) s
unpivot (dt for t in (dt1, dt2, dt3)) np
group by convert(varchar(10), dt, 20)
order by 1;