Это, кажется, дает вам то, что вам нужно.
set transaction isolation level read uncommitted;
declare @OrderTable as table
(
[Line] tinyint,
[Order] int,
[User_Assigned] nvarchar(50)
);
insert into @OrderTable
(
[Line],
[Order],
[User_Assigned]
)
values
(1, 12345, 'Chris'),
(2, 12345, 'Chris'),
(3, 12345, 'Chris'),
(4, 12345, null),
(5, 12345, null),
(6, 12345, null),
(7, 12345, null),
(8, 12345, null),
(9, 12345, null),
(1, 11223, null),
(2, 11223, null),
(3, 11223, null);
select
o.[Order],
sum(iif(o.User_Assigned is null, 1, 0)) as [OpenLines],
sum(iif(o.User_Assigned is not null, 1, 0)) as [PickedLines],
max(o.User_Assigned) as [User_Assigned]
from @OrderTable as [o]
group by
o.[Order]
Возвращает:
Order OpenLines PickedLines User_Assigned
11223 3 0 NULL
12345 6 3 Chris