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、名字和姓氏。

谢谢,泰

4

1 回答 1

0

我会 ORDER BY NEWID() 生成随机 GUID 并选择 TOP 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()   
于 2013-09-10T17:53:55.773 回答