Ik zou proberen de subquery's eerst in een tijdelijke tabel te plaatsen om uw tellingen te verzamelen en vervolgens uw totale tellingen te trekken. Met de manier waarop je de query hebt ingesteld, wordt elk van die subquery's één keer uitgevoerd voor elke regel PCapps, daarom duurt het zo lang.
Probeer zoiets als dit:
declare @t table (Computer varchar(10), Sequence int, Site varchar(3), SoftwareName varchar(20), OS varchar(20) )
insert into @t values
('C1',1,'BKN','Adobe Acrobat','Win7')
,('C2',1,'BKN','Adobe Acrobat','Win7')
,('C3',1,'BKN','Adobe Acrobat','Win7')
,('C1',1,'BKN','AutoCAD LT ','Win7')
,('C3',1,'BKN','AutoCAD LT ','Win7')
,('B1',2,'CTW','Adobe Acrobat','Win7')
,('B2',2,'CTW','Adobe Acrobat','Win7')
,('B3',3,'CTW','Adobe LT','Win7')
,('B4',3,'CTW','Adobe Acrobat','Win7')
,('A1',2,'CTW','Adobe Acrobat','Win7')
,('A2',2,'CTW','Adobe LT','Win7')
,('A3',2,'CTW','Adobe Acrobat','Win7')
,('X4',3,'CTW','Adobe Acrobat','WinXP')
,('X1',2,'CTW','Adobe Acrobat','WinXP')
,('X2',2,'CTW','Adobe LT','WinXP')
,('X3',2,'CTW','Adobe Acrobat','WinXP')
,('A4',2,'CTW','Adobe Acrobat','Win7');
SELECT
Site,
OS,
SoftwareName,
Sequence,
COUNT(SoftwareName) as 'Count'
into #SiteSpecific
FROM @t
group by Site, OS, SoftwareName, Sequence;
WITH PCapps AS (
SELECT DISTINCT
Computer,
Sequence,
Site,
SoftwareName,
OS
FROM @t
)
SELECT
DISTINCT
PC.SoftwareName,
PC.Sequence,
PC.Site,
PerSeq.[Count] as 'Win7Installs/seq',
PerSite.[Count] as TotWin7apps,
total.[Count] as TotalInstalls
FROM PCapps pc
inner join (select SoftwareName, Sequence, OS, sum([Count]) [Count] from #SiteSpecific group by SoftwareName, Sequence, OS) PerSeq
on PerSeq.SoftwareName = pc.Softwarename
AND PerSeq.Sequence = pc.Sequence
AND PerSeq.OS = pc.OS
inner join (select SoftwareName, Site, OS, sum([Count]) [Count] from #SiteSpecific group by SoftwareName, Site, OS) PerSite
on PerSite.SoftwareName = pc.Softwarename
AND PerSite.Site = pc.Site
AND PerSite.OS = pc.OS
inner join (select SoftwareName, sum([Count]) [Count] from #SiteSpecific group by SoftwareName) Total
on Total.SoftwareName = pc.Softwarename
where Pc.OS='Win7'
order by SoftwareName, Sequence, Site