Попробуйте это
Полный рабочий пример
declare @patient as table(
patientID int IDENTITY(1,1) NOT NULL,
patientName varchar(25),
docID int,
workstatus smallint
)
declare @doc as table(
docID int IDENTITY(1,1) NOT NULL,
docname varchar(25)
)
insert into @patient
select 'aaa', 2, 10
union all
select 'bbb', 2, 20
union all
select 'ccc', 1, 10
union all
select 'ddd', 3, 10
union all
select 'eee', 3, 20
union all
select 'fff', 2, 10
insert into @doc
select 'ggg'
union all
select 'hhh'
union all
select 'iii'
select docname,
SUM(case when t1.workstatus = 10 THEN 1 ELSE 0 END) as [workstatus(10)],
SUM(case when t1.workstatus = 20 THEN 1 ELSE 0 END) as [workstatus(20)]
from @patient t1
inner join @doc t2 on t1.docid=t2.docid
GROUP BY docname