Здесь позвольте мне объяснить мое решение, или я должен сказать логику, потому что я нахожусь в месте, где у меня НЕ есть доступ к SQL Server.Так что я не могу проверить это, вам, возможно, придется отредактировать, чтобы оно заработало .Объясняя, в чем моя логика ..
Прежде всего, при условии, что вы добавите столбец (который ДОЛЖЕН БЫТЬ для этой логики) в существующей таблице, скажите «unirow», который будет иметь уникальный номер, назначенный каждому сотруднику, начиная с 1.
Тогда вам нужно создать таблицу tbl_counter с одним столбцом в качестве числа. Будет только одна строка (ограничение), и изначально она будет равна 1.
Поскольку предварительное условие завершено, теперь давайте перейдем к логике.Все, что я сделал, - это сделал сам кросс-соединение для таблицы сотрудников пять раз, чтобы у вас была уникальная комбинация команды.Теперь все, что нужно сделать, это выбрать уникальных редакторов при каждом выполнении этого запроса / процедуры.Выходные данные этого запроса / процедуры будут содержать 5 столбцов, 1-й для редактора и остальные для участников.
BEGIN
DECLARE @counter number
DECLARE @limit number
DECLARE @Editor varchar(100)
select @limit=count(*) from Employees
select @counter=counter+1 from tbl_counter
IF(@counter>@limit)
begin
set @counter=1
update tbl_counter set counter=1
end
select @Editor=Name from Employees2 where id=@counter
select top 1 newid() as unirow,t1.name Editor,t2.name Contributor1,
t3.name Contributor2,t4.name Contributor3,t5.name Contributor4
from Employees t1,Employees t2,Employees t3,Employees t4,Employees t5
where t1.name<>t2.name and t1.name<>t3.name and t1.name<>t4.name and t1.name<>t5.name
and t2.name<>t1.name and t2.name<>t3.name and t2.name<>t4.name and t2.name<>t5.name
and t3.name<>t2.name and t3.name<>t1.name and t3.name<>t4.name and t3.name<>t5.name
and t4.name<>t2.name and t4.name<>t3.name and t4.name<>t1.name and t4.name<>t5.name
and t5.name<>t2.name and t5.name<>t3.name and t5.name<>t4.name and t5.name<>t1.name
and t1.name=@Editor
order by unirow
END