0

表格1:

ResourceID
Name0 (STRING)
NumberOfLongons0 (INT)
LastLogon0 (DateTIME)

表2:

ResourceID
NetbiosName0

我正在尝试检索以下数据:

NetbiosName0, Name0, NumberOfLogons0,LastLogon0它向我显示的位置NetbiosName0,无论是否存在其他数据,并且Name0/LastLogon0哪里NumberOfLogons0是最高的ResourceID

更新:

测试了SQL:

SELECT T2.ResourceID, T2.Netbios_Name0, T1.Name0, T1.NumberOfLogons0, t1.LastLogon0 
FROM V_R_System T2 LEFT OUTER JOIN v_GS_NETWORK_LOGIN_PROFILE T1 
ON T2.ResourceID = T1.ResourceID 
WHERE NOT EXISTS 
(SELECT * FROM v_GS_NETWORK_LOGIN_PROFILE 
    WHERE ResourceID = T2.ResourceID AND NumberOfLogons0 > T1.NumberOfLogons0)

并得到以下结果:

8435 CLETESTXP-001 NT AUTHORITY\LOCAL SERVICE 
8435 CLETESTXP-001 NT AUTHORITY\NETWORK SERVICE 
8435 CLETESTXP-001 NT AUTHORITY\SYSTEM 
8435 CLETESTXP-001 TESTAGNA\JBradnan 109 3/22/2012 11:37:00 AM
4

3 回答 3

1

If you need a single query to do this for multiple resources in a single command:

SELECT T2.ResourceID, T2.NetbiosName0, T1.Name0, T1.NumberOfLongons0, t1.LastLogon0
  FROM Table2 T2 LEFT OUTER JOIN Table1 T1 ON T2.ResourceID  = T1.ResourceID
  WHERE NOT EXISTS
    (SELECT * FROM Table1 WHERE ResourceID = T2.ResourceID AND NumbersOfLogons > T1.NumberOfLogons)

If you only need it for a single ResourceID at a time you can do something like the following (exact syntax depends on SQL product):

SELECT TOP 1 T2.ResourceID, T2.NetbiosName0, T1.Name0, T1.NumberOfLongons0, t1.LastLogon0
  FROM Table2 T2 LEFT OUTER JOIN Table1 T1 ON T2.ResourceID  = T1.ResourceID
  WHERE T2.ResourceID = <<ResourceID>> 
  ORDER BY T2.NumberOfLogOns0 DESC
于 2012-04-03T17:26:14.160 回答
0

我不确定我是否正确理解了这个问题。但这是我的猜测。

DECLARE @highest int
SET @Highest = (SELECT MAX(NumberOfLogons0) FROM Table1)
SELECT T2.NetbiosName0, T1.Name0, T1.NumberOfLogons0, T1.LastLogon0
FROM Table1 T1 RIGHT JION Table2 T2
ON T1.ResourceID = T2.ResourceID
WHERE T1.NumberOfLogons0 = @Highest

如果这不是您想要的或者我的回答有问题,请给我留言

于 2012-04-03T17:32:15.610 回答
0

在 SQL Server 2008 或更高版本中,您可以这样做:

select
  R.ResourceID,
  R.NetbiosName0,
  L.Name0,
  L.LastLogon0
from Table2 as R
outer apply (
  select top (1) 
  -- add WITH TIES
  -- if the largest NumberOfLogons0 value can occur multiple times
    Name0,
    LastLogon0
  from Table1 as L
  where L.ResourceID = R.ResourceID
  order by NumberOfLogons0 desc
) as L
于 2012-04-04T02:24:02.500 回答