0

表1:

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

表2:

ResourceID
NetbiosName0

次のデータを取得しようとしています。

NetbiosName0、、、、他のデータが存在するかどうかに関係なく、Name0/が最も高い場所に表示されます。NumberOfLogons0LastLogon0NetbiosName0Name0LastLogon0NumberOfLogons0ResourceID

アップデート:

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

1つのコマンドで複数のリソースに対してこれを行うために単一のクエリが必要な場合:

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)

一度に1つのResourceIDにのみ必要な場合は、次のようにすることができます(正確な構文はSQL製品によって異なります)。

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

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 に答える
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 に答える