0

私は、ランダムな薬物検査のために従業員をランダムに選択する Web サイトに取り組んでいます。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

このクエリは、従業員の社会保障番号、名、姓を含む 1 ~ 12 の 12 のレコードを返します。
asp.net Webページにアクセスして、5人の従業員をランダムにテストする必要があると入力すると、上記のクエリで従業員が関連付けられている行番号を返すクエリが得られるように、クエリを理解する必要があります。レポートの 1 ページ目で、レポートの 2 ページ目で、上記のクエリで割り当てられた番号と、従業員の SSN、名、姓が返されます。

ありがとう、ティ

4

1 に答える 1

0

ランダムな GUID を生成する ORDER BY NEWID() と SELECT TOP 5 を使用します。

編集しました。このクエリには 2 つの結果が返されます。1 は従業員の完全なリストで、もう 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()   
于 2013-09-10T17:53:55.773 に答える