2013-09-10 3 views
0

Я работаю над веб-сайтом, который делает случайный выбор сотрудников для случайного тестирования на наркотики. Я пытаюсь выяснить отчет/код с помощью SQL Server 2008, ASP.NET и C#. Вот пример того, что я работал до сих пор: Мне нужно создать отчет всех сотрудников для конкретной компании, где сотрудники назначают номер. Пример этого кода выглядит следующим образом:Случайный выбор числа строк

SELECT 
    dbo.names2.ssn, dbo.names2.firstname, dbo.names2.lastname, 
    ROW_NUMBER() over(order by dbo.names2.ssn) as RowNumber 
FROM 
    dbo.names2 
WHERE 
    dbo.names2.code = 8562 

Этого запрос возврат 12 записей номер 1-12 с сотрудниками номер социального страхования, первым имя и фамилией.
Теперь мне нужно выяснить запрос, чтобы при переходе на мою веб-страницу asp.net и введите, что мне нужно 5 сотрудников, чтобы быть случайным образом проверенным, чтобы получить запрос, который возвращает номер строки, с которой связан сотрудник в запросе выше на одной странице отчета, а на второй странице отчета возвращают номер, указанный в запросе выше, вместе с сотрудниками SSN, First и фамилия.

Благодаря, ти

+0

Sql Server имеет RAND() во встроенной функции – Anand

+1

http://stackoverflow.com/questions/848872/select-n-random-rows-from-sql-server-table – Anand

ответ

0

Я ORDER BY NEWID(), который генерирует случайный идентификатор GUID и ВЫБРАТЬ TOP 5.

редактироваться. Этот запрос имеет 2 результата возврата. 1 - это полный список сотрудников, а другой - это список из 5 случайно выбранных номеров, соответствующих ронту в списке сотрудников.

IF (OBJECT_ID(N'tempdb..#tempTable') IS NOT NULL) 
DROP TABLE #tempTable ; 

CREATE TABLE #tempTable 
(
    RowNum INT , 
    SSN VARCHAR(16) , 
    FirstName VARCHAR(64) , 
    LastName VARCHAR(64) 
); 

INSERT INTO [#tempTable] 
     ([RowNum] , 
     [SSN] , 
     [FirstName] , 
     [LastName] 
     ) 
SELECT ROW_NUMBER() OVER(ORDER BY dbo.names2.ssn) AS RowNum , 
     dbo.names2.ssn , 
     dbo.names2.firstname , 
     dbo.names2.lastname 
FROM dbo.names2 
WHERE dbo.names2.code = 8562 

SELECT [RowNum] , 
     [SSN] , 
     [FirstName] , 
     [LastName] 
FROM [#tempTable] AS tt 

SELECT TOP 5 RowNum 
FROM [#tempTable] AS tt 
ORDER BY NEWID() 
+0

Я бы предпочел, чтобы запросить из как вы делали выше. Что делает его случайным выбором ... Только проблема заключается в том, что мы должны предоставить нашему клиенту список номеров всех сотрудников, которые находятся в пуле, которые будут отобраны для тестирования на наркотики. К сожалению, для некоторых клиентов мы не можем предоставить список сотрудников, выбранных для тестирования на наркотики по соображениям безопасности. Вместо этого у нас есть процесс с двумя частями, где сборщик имеет только набор случайных чисел, а у менеджера на месте есть полный список сотрудников. Поэтому, когда мы выходим, они сравнивают два листа, чтобы определить, кто выбран для случайного теста. –

+0

Итак, у меня должен быть список сотрудников, число которых соответствует списку того, кто будет случайно выбран для тестирования на наркотики. –

+0

Итак, вам нужен основной список случайно сгенерированного числа/идентификатор со всеми сотрудниками (или выберите список), который соответствует списку случайно выбранных сотрудников? Если это так, я думаю, что у меня есть ответ. –

Смежные вопросы