我正在处理SQL查询的一些问题,对不起,我没有任何正在进行的工作要展示,因为到目前为止我没有尝试过任何工作,但是所以我希望有人能指出我正确的方向。
表格
计算机:
[SN][PN][ComputerName][Model][OS][Architecture][RAM][CPU]
登录:
[SN][Username][Timestamp]
的信息:
它以这种方式工作,每次用户登录到计算机时,计算机信息都会更新到计算机表,并且用户名和时间戳会被插入到登录表中。
结果
我想要实现的结果如下:
[SN][PN][ComputerName][Model][OS][Architecture][RAM][CPU]**[Primary User]**
每台计算机应该只有一行
主要用户字段应基于5个最新登录,并且是5个中重复次数最多的用户名。
所以我认为它包装起来了,我希望有人能够至少指出我正确的方向,因为谷歌必须提供的所有结果现在显示为红色。
答案 0 :(得分: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
答案 1 :(得分:0)
看起来您想要定义计算列。看看这个问题:Creating a computed column in SQL Server 2008