A Microsoft extension to the ANSI SQL language that includes procedural programming, local variables, and various support functions.
DECLARE @tbl TABLE (id int, groupid int, status varchar(100))
INSERT INTO @tbl
SELECT *
FROM (VALUES
(1,100,'Completed'),
(2,100,'Completed'),
(3,100,'Pending'),
(4,200,'Completed'),
(5,200,'Completed'),
(6,300,'Pending'),
(7,300,'Pending')
) a (id, groupid, status)
;with cte as (
SELECT
groupid,
MAX(CASE WHEN [status] = 'Completed' THEN 1 ELSE 0 END) AS IsComplete,
MAX(CASE WHEN [status] = 'Pending' THEN 1 ELSE 0 END) AS IsPending
FROM @tbl
GROUP BY groupid
)
SELECT groupid,
CASE
WHEN IsComplete=1 AND IsPending=1 THEN 'Partially Completed'
WHEN IsComplete=1 THEN 'Completed'
WHEN IsPending=1 THEN 'Pending'
END as [Status]
FROM cte
ORDER BY groupid