Ich benutze Microsoft SQL Server 2008. Ich muss nach einem Fremdschlüssel aggregieren, um zufällig einen einzelnen Wert zu erhalten, aber ich bin ratlos. Betrachten Sie die folgende Tabelle:Aggregat nach dem Zufallsprinzip?
id fk val
----------- ----------- ----
1 100 abc
2 101 def
3 102 ghi
4 102 jkl
Das gewünschte Ergebnis wäre:
fk val
----------- ----
100 abc
101 def
102 ghi
Wo die val für fk 102 zufällig sein würde, entweder "ghi" oder "jkl".
Ich versuchte, NEWID() zu verwenden, um eindeutige zufällige Werte zu erhalten, jedoch schlägt der JOIN fehl, da der NEWID() - Wert abhängig von der Unterabfrage unterschiedlich ist.
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
;
Ich bin ratlos. Irgendwelche Ideen würden sehr geschätzt werden.
@ypercube: Wurde im ersten Satz des Beitrags erwähnt ... –