Aggregate Function on Uniqueidentifier (GUID)
Solution 1:
Just cast it as a BINARY(16)
.
SELECT category, MIN(CAST(guid AS BINARY(16)))
FROM myTable
GROUP BY category
You can cast it back later if necessary.
WITH CategoryValue
AS
(
SELECT category, MIN(CAST(guid AS BINARY(16)))
FROM myTable
GROUP BY category
)
SELECT category, CAST(guid AS UNIQUEIDENTIFIER)
FROM CategoryValue
Solution 2:
Assuming you're using SQL Server 2005 or later:
;with Numbered as (
select category,guid,ROW_NUMBER() OVER (PARTITION BY category ORDER BY guid) rn
from myTable
)
select * from Numbered where rn=1