随机选择行号
本文关键字:选择 随机 | 更新日期: 2023-09-27 18:30:53
我正在开发一个随机选择员工进行随机药物测试的网站。 我正在尝试使用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, 名字和姓氏。
谢谢泰
我会按 newid() 排序,它会生成一个随机 GUID 并选择前 5 名。
编辑。此查询有 2 个返回结果。1 是员工的完整列表,另一个只是与员工列表上的 rownum 对应的 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()