随机行号选择

时间:2013-09-10 15:56:10

标签: c# asp.net sql-server-2008 stored-procedures

我正在一个随机选择员工进行随机药物测试的网站上工作。我试图找出使用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,名字和姓氏。

谢谢, TY

1 个答案:

答案 0 :(得分:0)

我会ORDER BY NEWID()生成随机GUID和SELECT 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()