Я пытаюсь создать запрос SQL 2005 для извлечения и объединения записей из 3 представлений данных SCCM.
Первый вид содержит записи действительных компьютеров; вторая содержит информацию для входа в систему, содержащую: идентификатор ПК, имя пользователя, метку времени и т. д .; третий содержит идентификатор ПК, IP-адрес.
1stview содержит только одну уникальную запись на ПК; 2-й вид может содержать несколько записей на ПК: по одной на каждый раз, когда пользователь входит в систему на компьютере; третий может содержать несколько записей на ПК: по одной для каждого IP-адреса, зарегистрированного в базе данных.
так что это похоже на:
view1 (v_R_System_Valid) fields (among others)
ResourceID, NetBIOS
view2 (v_GS_SYSTEM_CONSOLE_USER) fields (among others)
id,ResourceID,SystemConsoleUser0,LastConsoleUse0
view3 (v_RA_System_IPAddresses) fields (among others)
ResourceID,IP_Addresses0
Я ХОЧУ, чтобы запрос представил мне список всех ПК в первом представлении, а также отобразил (доступен) IP-адрес; последний раз, когда вход в систему и КОГО.
Запрос, который я создал, возвращает каждый ПК, но включает КАЖДОГО пользователя, который вошел в систему на этом ПК и когда, не только последний. Я надеюсь, что кто-нибудь может помочь мне понять это. Я не являюсь опытным сценаристом SQL и создал приведенный ниже код, используя информацию из Интернета.
Мой запрос:
Select
SV.Netbios_Name0 AS [NetBIOS Name],
SCU.SystemConsoleUser0 AS [User Name],
CAST(ISNULL(SCU.theLastTime, 0) AS datetime ) AS [Last Console Use]
from v_R_System_Valid SV
Left Join (Select ResourceID, SystemConsoleUser0,
Max(LastConsoleUse0) as theLastTime
from v_GS_SYSTEM_CONSOLE_USER
group by ResourceID, SystemConsoleUser0)
AS SCU on SCU.ResourceID = SV.ResourceID
where (SV.Netbios_Name0 not like 'ENC-%')
and (SV.Netbios_Name0 not like 'NL%')
order by SV.Netbios_Name0
Заранее спасибо,
Eric