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() を使用して一意のランダム値を取得しようとしましたが、サブクエリによって 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
;
私は困惑しています。どんなアイデアでも大歓迎です。