我正在使用 Microsoft 的 SQL Server 2008。我需要通过外键聚合以随机获取单个值,但我很难过。考虑下表:
id fk val
----------- ----------- ----
1 100 abc
2 101 def
3 102 ghi
4 102 jkl
期望的结果是:
fk val
----------- ----
100 abc
101 def
102 ghi
fk 102 的 val 将随机为“ghi”或“jkl”。
我尝试使用 NEWID() 来获取唯一的随机值,但是,JOIN 失败,因为 NEWID() 值因子查询而异。
WITH withTable AS (
SELECT id, fk, val, CAST(NEWID() AS CHAR(36)) random
FROM exampleTable
)
SELECT t1.fk, t1.val
FROM withTable t1
JOIN (
SELECT fk, MAX(random) random
FROM withTable
GROUP BY fk
) t2 ON t2.random = t1.random
;
我难住了。任何想法将不胜感激。