2012-11-30 88 views
1

我在分析添加/從我們的SCCM服務器上刪除程序數據和需要查詢一些援助工作匹配列表或其子集的記錄。SQL查詢只檢索

的數據已經從SCCM檢索並擦洗,這樣我只與實際應用中我感興趣的列表向左,常見的應用程序/安全更新/運行時間,等等都被過濾掉了。

我需要定義一個SQL查詢,這將給我的計算機及其應用程序的列表,只有當他們已通過列表中選擇一個或多個應用程序定義。

例如

Computer | Application 
-------------------------------------- 
WKS001  | Microsoft Office 
WKS001  | WebEx 
WKS001  | Java Runtime 1.6_33 
-------------------------------------- 
WKS002  | Microsoft Office 
WKS002  | WebEx 
WKS002  | Java Runtime 1.6_33 
WKS002  | Photoshop 
-------------------------------------- 
WKS003  | WebEx 
WKS003  | Java Runtime 1.6_33 
-------------------------------------- 
WKS004  | WebEx 
WKS004  | Photoshop 

我需要檢索的任何或全部的應用程序的所有計算機:

Microsoft Office 
WebEx 
Java Runtime 1.6_33 

這應該給我WKS001WKS003

+1

因此,您排除了'WKS002'和'WSK004',因爲這些計算機有超過3個目標應用程序? –

+0

是的,這就是我應該這樣寫的:) – Nasir

回答

1

如果需要排除電腦是有沒有在該列表中的應用:

SELECT DISTINCT t1.Computer 
FROM Table AS t1 
LEFT OUTER JOIN Table AS t2 ON t1.Computer = t2.Computer 
    AND t2.Application NOT IN ('Microsoft Office','WebEx','Java Runtime 1.6_33') 
WHERE t1.Application IN ('Microsoft Office','WebEx','Java Runtime 1.6_33') 
    AND t2.Computer IS NULL; 
0
SELECT Computer, Application 
FROM TABLE_NAME_HERE 
WHERE Application='Microsoft Office' 
    OR Application='WebEx' 
    OR Application='Java Runtime 1.6_33' 
0

其他的答案不帶回計算機的應用程序。試試這個:

SELECT 
    computer 
    ,application 
FROM 
    TABLENAME 
WHERE 
    computer IN 
     (
      SELECT 
       computer 
      FROM 
       TABLENAME 
      WHERE 
       application IN 
        (
         'Microsoft Office' 
         ,'WebEx' 
         ,'Java Runtime 1.6_33' 
        ) 
     ) 
    AND comptuer NOT IN 
     (
      SELECT 
       computer 
      FROM 
       TABLENAME 
      WHERE 
       application NOT IN 
        (
         'Microsoft Office' 
         ,'WebEx' 
         ,'Java Runtime 1.6_33' 
        ) 
     )