select distinct v1.name 'Machine Name', v1.[user] 'Primary User', CASE
When v1.Guid in (select distinct v1.guid from vComputer v1
inner join Inv_AddRemoveProgram t1 on v1.Guid = t1._ResourceGuid
inner join Inv_OfficeSuiteVersions3 t2 on v1.guid = t2._ResourceGuid
where t1.DisplayName = 'Microsoft Office Professional Plus 2007' and t1.InstallFlag = '1'
and t2.Outlook2007Ver <> 'Not Present')
Then 'Microsoft Office Professional Plus 2007'
When v1.Guid in (select distinct v1.guid from vComputer v1
inner join Inv_AddRemoveProgram t1 on v1.Guid = t1._ResourceGuid
inner join Inv_OfficeSuiteVersions3 t2 on v1.guid = t2._ResourceGuid
where t1.DisplayName = 'Microsoft Office Professional Plus 2010' and t1.InstallFlag = '1'
and t2.Outlook2010Ver <> 'Not Present')
Then 'Microsoft Office Professional Plus 2010'
When v1.Guid in (select distinct v1.guid from vComputer v1
inner join Inv_AddRemoveProgram t1 on v1.Guid = t1._ResourceGuid
inner join Inv_OfficeSuiteVersions4 t2 on v1.guid = t2._ResourceGuid
where t1.DisplayName = 'Microsoft Office Professional Plus 2013' and t1.InstallFlag = '1'
and t2.Outlook2013Ver <> 'Not Present')
Then 'Microsoft Office Professional Plus 2013'
When v1.Guid in (select distinct v1.guid from vComputer v1
inner join Inv_AddRemoveProgram t1 on v1.Guid = t1._ResourceGuid
inner join Inv_OfficeSuiteVersions5 t2 on v1.guid = t2._ResourceGuid
where t1.DisplayName like 'Microsoft Office 365 ProPlus%' and t1.InstallFlag = '1'
and Outlook2016Ver <> 'Not Present')
Then 'Microsoft Office 365 ProPlus'
End [Office Version], v2.[Location by Subnet] 'Location'
from vComputer v1
inner join vcomputerlocations v2 on v1.Guid = v2.Guid
and v1.Name like 'USSD%'
and v1.Guid not in (select Guid from CollectionMembership where FilterName = 'Software Delivery Exclusions')
or v1.Name like 'USSF%'
and v1.Guid not in (select Guid from CollectionMembership where FilterName = 'Software Delivery Exclusions')
or v1.Name like 'USSEA%'
and v1.Guid not in (select Guid from CollectionMembership where FilterName = 'Software Delivery Exclusions')
or v1.Name like 'USBES%'
and v1.Guid not in (select Guid from CollectionMembership where FilterName = 'Software Delivery Exclusions')
or v1.Name like 'USCAM%'
and v1.Guid not in (select Guid from CollectionMembership where FilterName = 'Software Delivery Exclusions')
order by 3,4,1
-3
A
回答
0
考慮使用Common Table Expressions, Temp Tables or Table Variables進行重複操作,並假設各種Guid是主鍵,請嘗試使用它們的值而不是顯示或過濾器名稱列進行選擇。
像這樣的東西可能:
WITH a AS
(
SELECT v1.Guid, v1.Name, v1.[user], t1.DisplayName from vComputer v1
INNER JOIN Inv_AddRemoveProgram t1 on v1.Guid = t1._ResourceGuid
INNER JOIN Inv_OfficeSuiteVersions3 t2 on v1.Guid = t2._ResourceGuid
WHERE t1.InstallFlag = '1'
AND
(t1.PrimaryKey = '2007 PrimaryKey Value' AND t2.Outlook2007Ver <> 'Not Present')
OR
((t1.PrimaryKey = '2010 PrimaryKey Value' AND t2.Outlook2010Ver <> 'Not Present') --etc etc
),
b AS
(
SELECT Guid FROM CollectionMembership WHERE FilterName = 'Software Delivery Exclusions'
) -- would be better to search by primary key
SELECT a.*, v2.[Location by Subnet]
FROM a INNER JOIN vcomputerlocations v2 on a.Guid = v2.Guid
LEFT JOIN b ON a.Guid = b.Guid
WHERE b.Guid IS NULL
也許不是完美的,但我希望你的想法
+0
感謝您的想法,使用這種方法做了伎倆。非常感謝你! – user3009669
+0
@ user3009669如果這個答案有幫助,請把它標記爲已接受? –
0
- 從查詢的結束
刪除訂單的,如果你在 您的應用程序需要排序。
如果可以,則應該重寫此查詢,因爲它無法在您的連接上使用 索引 - >當您使用像「USSF%」這樣的過濾器時,SQL引擎無法使用索引。
- 如果您沒有任何,請在FilterName上創建索引。
相關問題
- 1. 運行Gradlelw需要永久
- 2. 運行hmset()需要永久
- 3. 我如何使這個查詢運行得更快?
- 4. 這需要多長時間才能運行,我該如何加速運行
- 5. MySQL查詢永久運行
- 6. 如何使這個複雜的查詢運行得更快?
- 7. 如何使這個查詢運行得更快
- 8. MDX查詢需要永久運行在jPivot
- 9. For循環需要永久運行
- 10. Matlab dir()需要永久運行
- 11. 如何優化此查詢?需要3分鐘才能運行
- 12. 爲什麼我的查詢需要2分鐘才能運行?
- 13. 該查詢運行SQL Server的更快
- 14. 如何更改永久運行的SKAction
- 15. 我的查詢第二次運行得更快,我該如何阻止?
- 16. MySQL查詢運行得更快
- 17. 可以使這個SQL查詢運行得更快嗎?
- 18. 這個SQL查詢可以優化運行得更快嗎?
- 19. Oracle Report永久佔用,但查詢運行速度很快
- 20. 編寫需要babel並運行它的javacript的快速方法?
- 21. 需要永久運行的應用程序的編程語言
- 22. 我該如何編寫這個查詢?
- 23. 運行SQL查詢更快
- 24. 使查詢運行更快
- 25. 我該怎麼做才能讓我的程序運行得更快?
- 26. 爲什麼SDL如此之慢,我怎樣才能讓它運行得更快?
- 27. 永久運行多久
- 28. MySql查詢執行需要從PHP永遠,但很快從phpMyAdmin運行完成
- 29. 爲什麼我的腳本需要永久運行?
- 30. SQL Server - 嵌套查詢需要40分鐘才能運行
您需要發佈查詢的執行計劃。否則,幾乎不可能獲得適當的幫助。 –
您是否設置了正確的索引並嘗試使用EXPLAIN? –
你可能也想發佈這個問題http://codereview.stackexchange.com/questions/tagged/sql-server – scsimon