我正在使用微软的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()来获取唯一的随机值,但是,由于NEWID()值根据子查询而不同,因此JOIN失败。
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
;
我很难过。任何想法将不胜感激。
@ypercube:在帖子的第一句话中提到... –