【问题标题】:Filter out duplicate rows in SQL Query过滤掉 SQL Query 中的重复行
【发布时间】:2020-03-29 01:40:14
【问题描述】:

我正在尝试使用 SQL 从 SCCM 提取更新合规性数据,并提出了以下查询:

SELECT updates.ArticleID, updates.Title, devices.Name, MAX(compliance.LastStatusChangeTime) AS LastUpdated, compliance.[Status]
FROM v_UpdateDeploymentSummary deployments
INNER JOIN v_UpdateInfo updates
    ON deployments.CI_ID=updates.CI_ID
INNER JOIN CollectionMembers devices
    ON deployments.CollectionID=devices.SiteID
INNER JOIN v_UpdateComplianceStatus compliance
    ON compliance.CI_ID=deployments.CI_ID
WHERE compliance.[Status] IS NOT NULL
GROUP BY updates.ArticleID, updates.Title, devices.Name, compliance.[Status]
ORDER BY ArticleID, LastUpdated DESC

但是,SCCM 似乎为同一个更新部署存储了多个合规性状态记录。例如,昨晚在该设备上安装了 KB890830,从今天早上 09:19 开始,这反映在下面的行中。我想更改查询,以便返回的唯一行是第 15 行,显示该 KB 的最新状态更新。

有什么建议吗?

【问题讨论】:

    标签: sql sql-server database select greatest-n-per-group


    【解决方案1】:

    您可以使用窗口函数row_number() 进行过滤,而不是聚合:

    SELECT *
    FROM (
        SELECT 
            updates.ArticleID, 
            updates.Title, 
            devices.Name, 
            compliance.LastStatusChangeTime AS LastUpdated, 
            compliance.[Status],
            ROW_NUMBER() OVER(
                PARTITION BY updates.ArticleID 
                ORDER BY compliance.LastStatusChangeTime DESC
            ) rn
        FROM v_UpdateDeploymentSummary deployments
        INNER JOIN v_UpdateInfo updates
            ON deployments.CI_ID=updates.CI_ID
        INNER JOIN CollectionMembers devices
            ON deployments.CollectionID=devices.SiteID
        INNER JOIN v_UpdateComplianceStatus compliance
            ON compliance.CI_ID=deployments.CI_ID
        WHERE compliance.[Status] IS NOT NULL
    ) t
    WHERE rn = 1
    ORDER BY ArticleID, LastUpdated DESC
    

    在内部查询中,row_number() 将排名分配给具有相同ArticleID 的记录,按降序排列LastStatusChangeTime。然后,外部查询过滤每个组中的顶部记录。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-13
      • 2013-01-10
      • 2012-08-01
      • 2018-09-29
      • 2018-11-01
      相关资源
      最近更新 更多