У меня есть набор данных, в котором мне нужно случайным образом выбрать х строк, удовлетворяющих определенным критериям, х строк, соответствующих другим критериям и т. Д., И выводит результаты в одну таблицу. Я использую следующие:Предотвращение дубликатов со случайными строками и дубликатами
SELECT * FROM (SELECT TOP 1000 * FROM dbo.[Client List]
WHERE Source = 'HC' AND Service = 'Service1' AND Provider = 'ProviderName1'
ORDER BY NEWID()) Table1
UNION ALL
SELECT * FROM (SELECT TOP 500 * FROM dbo.[Client List]
WHERE Source = 'HC' AND Service = 'Service2' AND Provider = 'ProviderName2'
ORDER BY NEWID()) Table2
UNION ALL
SELECT * FROM (SELECT TOP 2200 * FROM dbo.[Client List]
WHERE Source = 'BA' AND Service = 'Service3' AND Provider = 'ProviderName3'
ORDER BY NEWID()) Table3
Это работает, но есть одна проблема:... Это позволяет дубликата идентификатора клиента (ПСЭ [Список клиентов] [ClientID], чтобы выбрать Все мои результаты должны быть уникальными клиентами.
Другими словами, он должен выполнить первый случайный выбор, затем выполнить второй случайный выбор, не имея возможности выбрать любой из идентификаторов ClientID, выбранных при первом выборе, и т. д. (Да, я понимаю что это не технически «случайный».) Есть ли способ добавить какой-то код в инструкцию WHERE для каждого последующего SELECT, или мне нужно переосмыслить всю структуру кода? Спасибо!