繁体   English   中英

“差异表”的两个数据集的SSRS比较

[英]SSRS comparison of two datasets for “Difference Table”

我们正在推出连接到新服务器的新Symantec客户端。 我建立了一个报告,显示推出状态。

到现在为止还挺好。 现在,我尝试报告在新环境中不可见的服务器。

  • 来源1:SQL Server A上的SEPM数据库
  • 来源2:SQL Server B上的SCCM数据库

查询我需要的东西的数据集已经存在。

字段的服务器名称值相同。

我的目标是比较一个表:

  • “ SEPM数据库服务器名称”和“ SCCM数据库服务器名称”

并将服务器名称仅写到不在两者中的表中。

需要此功能来检查哪个服务器尚未加入新环境。

对不起,希望您理解我的意思。 SSRS对我来说很新。 在所附的屏幕截图中,您可以看到我现在拥有的第一份报告:

创建第一个报告

在此处输入图片说明

可视概述数据库的“关系”

在此处输入图片说明

您可以像这样完全连接。

WITH
sepm_server_list
AS
(
    SELECT tbl.* FROM (VALUES
      ( 'SEPM', 'Server1')
    , ( 'SEPM', 'Server2')
    , ( 'SEPM', 'Server3')
    , ( 'SEPM', 'Server4')
    ) tbl ([DatabaseName], [ServerName]) 
)
, 
sccm_server_list
AS
(
    SELECT tbl.* FROM (VALUES
      ( 'SCCM', 'Server1')
    , ( 'SCCM', 'Server2')
    , ( 'SCCM', 'Server3')
    , ( 'SCCM', 'Server5')
    ) tbl ([DatabaseName], [ServerName]) 
)
SELECT
      sepm.*
    , sccm.*
FROM 
    sepm_server_list AS sepm 
    FULL JOIN sccm_server_list AS sccm ON sepm.[ServerName] = sccm.[ServerName]
WHERE
    1=1
    AND 
        (
        sepm.[ServerName] IS NULL
        OR 
        sccm.[ServerName] IS NULL
        )

在此处输入图片说明

或者,您也可以将其写为带有联合的except语句,以获取同一列中的值。

WITH
sepm_server_list
AS
(
    SELECT tbl.* FROM (VALUES
      ( 'SEPM', 'Server1')
    , ( 'SEPM', 'Server2')
    , ( 'SEPM', 'Server3')
    , ( 'SEPM', 'Server4')
    ) tbl ([DatabaseName], [ServerName]) 
)
, 
sccm_server_list
AS
(
    SELECT tbl.* FROM (VALUES
      ( 'SCCM', 'Server1')
    , ( 'SCCM', 'Server2')
    , ( 'SCCM', 'Server3')
    , ( 'SCCM', 'Server5')
    ) tbl ([DatabaseName], [ServerName]) 
)
SELECT DatabaseName = 'SEPM', A.[ServerName] FROM 
(
    SELECT [ServerName] FROM sepm_server_list
    EXCEPT
    SELECT [ServerName] FROM sccm_server_list
) A
UNION
SELECT DatabaseName = 'SCCM', B.[ServerName] FROM 
(
    SELECT [ServerName] FROM sccm_server_list
    EXCEPT
    SELECT [ServerName] FROM sepm_server_list
) B

在此处输入图片说明

这是您发布的查询的示例。

WITH
sepm_server_list
AS
(
    SELECT [DatabaseName] = 'SEPM', [ServerName] = COMPUTER_NAME FROM v_sem_computer
)
, 
sccm_server_list
AS
(
    SELECT [DatabaseName] = 'SCCM', [ServerName] = F.[Name] FROM (v_Collection AS C LEFT JOIN v_FullCollectionMembership AS F ON F.CollectionID = C.CollectionID) WHERE C.[Name] = 'ALL_SERVERS_neu'
)
SELECT DatabaseName = 'SEPM', A.[ServerName] FROM 
(
    SELECT [ServerName] FROM sepm_server_list
    EXCEPT
    SELECT [ServerName] FROM sccm_server_list
) A
UNION
SELECT DatabaseName = 'SCCM', B.[ServerName] FROM 
(
    SELECT [ServerName] FROM sccm_server_list
    EXCEPT
    SELECT [ServerName] FROM sepm_server_list
) B

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM