假设我有下表:
category | guid
---------+-----------------------
A | 5BC2...
A | 6A1C...
B | 92A2...
基本上,我想要执行以下 SQL:
SELECT category, MIN(guid)
FROM myTable
GROUP BY category
它不一定是 MIN。我只想返回每个类别的一个 GUID。我不在乎是哪一个。不幸的是,SQL Server 不允许在 GUID 上使用 MIN 或 MAX。
当然,我可以将 guid 转换为 varchar,或者创建一些嵌套的 TOP 1 SQL,但这似乎是一个丑陋的解决方法。我错过了一些优雅的解决方案吗?
最佳答案
只需将其转换为 BINARY(16)
。
SELECT category, MIN(CAST(guid AS BINARY(16)))
FROM myTable
GROUP BY category
如有必要,您可以稍后将其转换回来。
WITH CategoryValue
AS
(
SELECT category, MIN(CAST(guid AS BINARY(16)))
FROM myTable
GROUP BY category
)
SELECT category, CAST(guid AS UNIQUEIDENTIFIER)
FROM CategoryValue
关于sql - 唯一标识符 (GUID) 上的聚合函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6069368/