我正在使用微軟的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:在帖子的第一句話中提到... –