を選択して、私はこのテーブルを持っている:一意のフィールドに
TableA
----------------
ID (pk) Name
1 A
2 B
3 C
4 A
5 D
6 A
7 B
8 A
9 D
10 C
....
私はランダムに5つのレコード内で一意である必要があります名前とSELECT TOP 5 ID, Name FROM TableA
で抽出する必要があります。
;WITH group
AS
(
SELECT ID, Name,
ROW_NUMBER() OVER (PARTITION BY Name ORDER BY NewId()) rn
FROM TableA
)
SELECT ID, Name
FROM group
WHERE rn = 1
をしかしたびに私は、全く同じ結果になります。
私がしようとしています。
IDのすべての値をランダムに選択する必要があります。名前は常にレコードごとに異なります。
私は問題が理解できることを願っています。何か案は?
解決策が見つかりました。それは動作するようです!
;WITH group
AS (
SELECT ID, Name, ROW_NUMBER() OVER (PARTITION BY Name ORDER BY NewId()) rn FROM TableA)
SELECT top 5 ID, Name, NewId() [NewId]
FROM group
WHERE rn = 1
ORDER BY [newid]
あなたのクエリは、SQL Server 2012上で動作するだけで '[グループ]'としてrenaming'group'。それぞれ異なる結果が実行されます – Horaciux
SQL Server 2014では動作しません。 – MoS
あなたの解決策を質問の一部として投稿しないようにしてください。代わりに、あなた自身の質問に答え、あなた自身の答えを受け入れます。そうすれば、人々は問題が解決されたことを知ることができます。 –