Генерировать случайные записи из таблицы tblFruit на основе поля Тип - PullRequest
2 голосов
/ 04 февраля 2020

Мне понадобится ваша помощь для генерации случайных записей из таблицы tblFruit на основе поля Тип (без дублирования)

Table: tblFruit

Согласно приведенной выше таблице.

Существует 4 типа фруктов с номерами 1,2,3,4

Я хочу динамически генерировать x записей из таблицы tblFruit (например, 7 записей). Допустим, мне нужно получить 7 случайных записей фруктов.

Мой результат должен содержать фрукты разных типов. Однако нам нужно убедиться, что результат содержит только 7 записей.

, т.е. 2 записи типа 1, 2 записи типа 2, 2 записи типа 3, 1 запись типа 4

например,

My Result

Примечание. Если я хочу создать 10 записей (без дублирования), я получу 2 записи каждого типа и две оставшиеся записи произвольно любого типа.

Большое спасибо за помощь.

1 Ответ

2 голосов
/ 04 февраля 2020

Я мог бы предложить:

select top (7) f.*
from tblfruit f
order by row_number() over (partition by type order by newid());

Это на самом деле даст результат с примерно одинаковым количеством строк каждого типа (ну, конечно, на 1), но это соответствует вашим потребностям.

...