Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
仅检索与列表或其子集匹配的记录的SQL查询_Sql_Sql Server - Fatal编程技术网

仅检索与列表或其子集匹配的记录的SQL查询

仅检索与列表或其子集匹配的记录的SQL查询,sql,sql-server,Sql,Sql Server,我正在分析从我们的SCCM服务器添加/删除程序数据,需要一些查询帮助 数据已从SCCM中检索并清理,因此我只剩下我感兴趣的实际应用程序列表。常用应用程序/安全更新/运行时等已被过滤掉 我需要定义一个SQL查询,只有当它们有一个或多个由列表定义的应用程序时,它才会给我一个计算机及其应用程序的列表 e、 g 我需要检索具有以下任何或所有应用程序的所有计算机: Microsoft Office WebEx Java Runtime 1.6_33 如果您需要排除具有不在该列表中的应用程序的计算机,则应

我正在分析从我们的SCCM服务器添加/删除程序数据,需要一些查询帮助

数据已从SCCM中检索并清理,因此我只剩下我感兴趣的实际应用程序列表。常用应用程序/安全更新/运行时等已被过滤掉

我需要定义一个SQL查询,只有当它们有一个或多个由列表定义的应用程序时,它才会给我一个计算机及其应用程序的列表

e、 g

我需要检索具有以下任何或所有应用程序的所有计算机:

Microsoft Office
WebEx
Java Runtime 1.6_33
如果您需要排除具有不在该列表中的应用程序的计算机,则应为我提供
WKS001
WKS003

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;
如果需要排除具有不在该列表中的应用程序的计算机:

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;

其他的答案并不能带回计算机的应用程序。试试这个:

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'
                    )
        )

其他的答案并不能带回计算机的应用程序。试试这个:

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'
                    )
        )

因此,您排除了
WKS002
WSK004
,因为这些计算机的目标应用程序超过了3个?是的,我应该这样写:)所以您排除了
WKS002
WSK004
,因为这些计算机的目标应用程序超过了3个?是的,我应该这样写:)