3

作業中のSQLクエリにいくつか問題があります。これまで試したことはうまくいかなかったため、表示する進行中の作業がないことを残念に思います。誰かが私を正しい方向に向けることができることを願っています。

テーブル:

コンピューター:

[SN][PN][ComputerName][Model][OS][Architecture][RAM][CPU]

ログオン:

[SN][Username][Timestamp]

情報:

これはこのように機能し、ユーザーがコンピューターにログオンするたびに、コンピューター情報がコンピューターテーブルに更新され、ユーザー名とタイムスタンプがログオンテーブルに挿入されます。

結果

私が達成しようとしている結果は次のとおりです。

[SN][PN][ComputerName][Model][OS][Architecture][RAM][CPU]**[Primary User]**

コンピュータごとに1行だけにする必要があります

[プライマリユーザー]フィールドは、最新の5つのログオンに基づいており、それらの5つの中で最も頻繁に繰り返されるユーザー名である必要があります。

だから私はそれを締めくくると思います、グーグルが提供しなければならないすべての結果が今赤く表示されるので、ここの誰かが少なくとも私を正しい方向に向けることができることを願っています。

4

2 に答える 2

3

少しRBARですが、次のようなもので十分です。

SELECT [SN],
       [PN],
       [ComputerName],
       [Model],
       [OS],
       [Architecture],
       [RAM],
       [CPU],
       O.[Username] AS [Primary User]
FROM   Computers C
       OUTER APPLY (SELECT TOP 1 [Username]
                    FROM   (SELECT TOP (5) *
                            FROM   Logons L
                            WHERE  L.[SN] = C.[SN]
                            ORDER  BY [Timestamp] DESC) Last5Users
                    GROUP  BY [Username]
                    ORDER  BY Count(*) DESC,
                              Max([Timestamp]) DESC) O 
于 2012-09-26T17:46:25.583 に答える
0

計算列を定義したいようです。この質問を確認してください:SQLServer2008で計算列を作成する

于 2012-09-26T17:31:34.740 に答える