Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.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
concat为unique的SQL非重复列_Sql_Sql Server_Distinct_Concat - Fatal编程技术网

concat为unique的SQL非重复列

concat为unique的SQL非重复列,sql,sql-server,distinct,concat,Sql,Sql Server,Distinct,Concat,在SQL Server中,我有一个名为v_master_Server_list的简单视图 服务器条目具有多个组成员身份,因此每个组成员身份的服务器都将在视图中复制。我只需要返回具有不同服务器名称的一行,对于每个组成员,我希望它与某种分隔符连接,如“|”或“,” 我已经想出了这个感谢的链接,我必须清除空条目,否则LEN和LEFT函数将无法工作。问题是,即使在“arms_group”中找不到任何条目,我现在如何返回所有条目 select server, LEFT(column_names, LEN(

在SQL Server中,我有一个名为v_master_Server_list的简单视图

服务器条目具有多个组成员身份,因此每个组成员身份的服务器都将在视图中复制。我只需要返回具有不同服务器名称的一行,对于每个组成员,我希望它与某种分隔符连接,如“|”或“,”

我已经想出了这个感谢的链接,我必须清除空条目,否则LEN和LEFT函数将无法工作。问题是,即使在“arms_group”中找不到任何条目,我现在如何返回所有条目

select server, LEFT(column_names, LEN(column_names )-1) AS column_names
from cmdb.[dbo].v_master_server_list AS extern
CROSS APPLY
(
    select arms_group + ','
    FROM cmdb.[dbo].v_master_server_list AS intern
    where extern.server = intern.server
    FOR XML PATH('')
) pre_trimmed (column_names)

where arms_group is not null
GROUP BY server, column_names;
你可以用


在Sql Server vNext中,您可以使用

您需要选择“名称”DISTINCT,还需要使用GROUP BY命令尝试GROUP BY并得到一个错误,即它不包含在聚合函数或GROUP BY子句中。如果您要显示一些代码,您是如何运行它的?同样给出表结构Hi,这是视图的表结构,希望它是您需要的-我正在尝试这样做:从v_master_server_列表中逐个服务器选择不同的服务器、arms_组,并获得:Msg 8120,级别16,状态1,第1行列“v_master_server_list.ARMS_Group”在选择列表中无效,因为它不包含在聚合函数或Group BY子句中。
select distinct
    group_membership
  , servers = stuff(
    (
      select distinct '|'+i.server_name
        from v_master_server_list as i
        where i.group_membership = o.group_membership
        order by i.server_name
      for xml path (''), type).value('.','varchar(max)')
      ,1,1,'')
  from v_master_server_list as o