【问题标题】:SQL Reporting : An item with the same key has already been addedSQL 报告:已添加具有相同键的项目
【发布时间】:2018-06-21 04:08:41
【问题描述】:

我在 SQL 构建中不断收到此错误。我尝试执行查询并显示正确的结果,但是当我尝试刷新字段时,我收到一条错误消息:

已添加具有相同密钥的项目。

这是我之前的 SQL 报告,它会在我们的环境中显示 SCCM 代理,并且有效。

Select Distinct
	vrs.AD_Site_Name0 [AD Site],  
	vrs.name0 [Computer], 
	vrs.User_Name0 [Current User], 
	vru.Unique_User_Name0 [Account Name], 
	vru.Full_User_Name0 [Display Name], 
	opsys.caption0 [OS], 
	vrs.Client0 [Client],
	
	CASE
	When compsys.SystemType0 like '%x86%' Then 'x86'
	When compsys.SystemType0 like '%x64%' Then 'x64'
	Else 'unknown'
END as [System Type],

CASE 	
	WHEN vrs.Name0 like 'Ou%' THEN	'Ou' 
	
	ELSE 'Others'
END as [AD Site Name],

CASE 
		WHEN opsys.Caption0 like '%Windows 7%' THEN 'Windows 7'
		WHEN opsys.Caption0 like '%Windows 8%' Then 'Windows 8'
		WHEN opsys.Caption0 like '%Windows 10%' THEN 'Windows 10'
		When opsys.Caption0 like '%Windows Server 2008%' Then 'Windows Server 2008'
		When opsys.Caption0 like '%Windows Server 2012%' Then 'Windows Server 2012'
		Else opsys.Caption0 
	END as [OS],
	CASE 
	WHEN opsys.CSDVersion0 is null THEN 'No SP'
	Else opsys.CSDVersion0
END as [Service Pack],
	vrs.Client_Version0 AS "Agent Version"	
	FROM
	v_R_System vrs
	LEFT Join v_R_User vru ON vrs.User_Name0 = vru.User_Name0
	Left Join v_GS_OPERATING_SYSTEM OPSYS on vrs.ResourceID = opsys.ResourceID
	Left Join v_GS_Computer_System compsys on vrs.ResourceID = compsys.ResourceID
	
	 
	Inner Join v_FullCollectionMembership FCM ON vrs.ResourceID = FCM.ResourceID AND FCM.CollectionID = 'xxxx'
WHERE 
	
	vrs.Name0 not like 'unknown' 
ORDER BY
	vrs.name0

所以我需要将 LastHWScan 和 LastSWScan 添加到报告中,我尝试了这个适用于我的其他报告的方法,但我收到错误消息,“已添加具有相同密钥的项目”。也许我只是没有看到它。希望有人可以帮助我。

Select distinct
vrs.AD_Site_Name0[AD Site],
  vrs.name0[Computer],
  vrs.User_Name0[Current User],
  vru.Unique_User_Name0[Account Name],
  vru.Full_User_Name0[Display Name],
  opsys.caption0[OS],
  vrs.Client0[Client],
  HWSCAN.LastHWScan[LastHWScan],
  SWSCAN.LastScanDate[LastSWScan],

  CASE
When compsys.SystemType0 like '%x86%'
Then 'x86'
When compsys.SystemType0 like '%x64%'
Then 'x64'
Else 'unknown'
END as[System Type],

  CASE
WHEN vrs.Name0 like 'OU%'
THEN 'OU'

ELSE 'Others'
END as[AD Site Name],

  CASE
WHEN opsys.Caption0 like '%Windows 7%'
THEN 'Windows 7'
WHEN opsys.Caption0 like '%Windows 8%'
Then 'Windows 8'
WHEN opsys.Caption0 like '%Windows 10%'
THEN 'Windows 10'
When opsys.Caption0 like '%Windows Server 2008%'
Then 'Windows Server 2008'
When opsys.Caption0 like '%Windows Server 2012%'
Then 'Windows Server 2012'
Else opsys.Caption0
END as[OS],
  CASE
WHEN opsys.CSDVersion0 is null THEN 'No SP'
Else opsys.CSDVersion0
END as[Service Pack],
  vrs.Client_Version0 AS "Agent Version"
FROM
v_R_System vrs
LEFT Join v_R_User vru ON vrs.User_Name0 = vru.User_Name0
Left Join v_GS_OPERATING_SYSTEM OPSYS on vrs.ResourceID = opsys.ResourceID
Left Join v_GS_Computer_System compsys on vrs.ResourceID = compsys.ResourceID
Left join v_GS_WORKSTATION_STATUS HWSCAN on vrs.resourceID = HWSCAN.resourceID
Left join v_GS_LastSoftwareScan SWSCAN on vrs.resourceID = SWSCAN.resourceID

Inner Join v_FullCollectionMembership FCM ON vrs.ResourceID = FCM.ResourceID AND FCM.CollectionID = 'xxx'
WHERE

vrs.Name0 not like 'unknown'
ORDER BY
vrs.name0

【问题讨论】:

    标签: sql reporting-services reporting sccm


    【解决方案1】:

    虽然 SQL 允许多个列具有相同的名称,但报表设计器却不允许。 这就是您可以预览查询但不能保存的原因。

    所以你不能拥有

    opsys.caption0 [OS]
    

    直接以及你美化操作系统名称的情况

      CASE
    WHEN opsys.Caption0 like '%Windows 7%'
    THEN 'Windows 7'
    WHEN opsys.Caption0 like '%Windows 8%'
    Then 'Windows 8'
    WHEN opsys.Caption0 like '%Windows 10%'
    THEN 'Windows 10'
    When opsys.Caption0 like '%Windows Server 2008%'
    Then 'Windows Server 2008'
    When opsys.Caption0 like '%Windows Server 2012%'
    Then 'Windows Server 2012'
    Else opsys.Caption0
    END as[OS]
    

    如果您确实需要两者,则必须将其中一列重命名为唯一名称。

    我不知道为什么这可以与前面的示例一起使用,但 imo 不应该。更改本身应该没问题。通常出现此错误时,最简单的方法是在预览版(或 sql studio)中运行它并检查具有相同名称的多个列。

    【讨论】:

    • 哇哦。我换了一个词,它奏效了。非常感谢!难怪我所有的报告都有同样的错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-15
    • 2013-04-04
    • 2013-02-16
    • 2022-09-29
    相关资源
    最近更新 更多