Я пытаюсь получить список систем из нашего программного обеспечения для инвентаризации (в данном случае SCCM) из одного представления (v_gs_softwarefile), но по нескольким критериям. В этом конкретном случае мне нужны все системы (SCCM вызывает уникальный идентификатор «ResourceID», поэтому я просто придерживался этого), которые не имеют версию iexplore> 8, а с другой стороны есть файл saplogon.exe с точной версией 7100.3.13.1045.
Версия 1 (Вопрос: Как вывести имя файла и версию файла saplogon.exe в результате?)
SELECT DISTINCT
t1.ResourceID
,t1.FileName
,t1.FileVersion
FROM
v_GS_SoftwareFile as t1
WHERE
(t1.filename = 'iexplore.exe'
and
t1.fileversion < '8.0')
and
t1.resourceid in (
SELECT DISTINCT
t2.resourceid
FROM
v_gs_softwarefile as t2
WHERE
t2.filename = 'saplogon.exe'
and
t2.fileversion ='7100.3.13.1045')
Мне удалось получить мой вывод со второй попытки, однако полученный SQL, вероятно, слишком сложен для простого вопроса, с которым я столкнулся в Версии 1
Версия 2:
declare @tab1 table (
resourceid int,
filename char(255),
fileversion char(255)
)
insert into @tab1(t1.resourceid,t1.filename,t1.fileversion)
select
t1.resourceid,
t1.FileName,
t1.FileVersion
from v_GS_SoftwareFile as t1
where
t1.filename = 'iexplore.exe'
and
t1.fileversion < '8'
select distinct
temp.resourceid,
temp.filename as 'IE',
temp.fileversion as 'IE ver',
orig.filename as 'SAP',
orig.fileversion as 'SAP ver'
from @tab1 as temp
inner join v_gs_softwarefile as orig on orig.resourceid = temp.resourceid
where
orig.filename = 'saplogon.exe'
and
orig.fileversion = '7100.3.13.1045'
order by temp.resourceid
Результат выглядит так:
resourceid | IE | IE ver | SAP | SAP ver
2542 |iexplore.exe | 6.00.2900.5512 (xpsp.080413-2105) | saplogon.exe | 7100.3.13.1045
1544 |iexplore.exe | 7.00.5730.11 (winmain(wmbla).061017-1135) | saplogon.exe | 7100.3.13.1045