随机选择行号

本文关键字:选择 随机 | 更新日期: 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()