Sql server 填充函数生成Msg 8120,16级
我有一个生产数据库Sql server 填充函数生成Msg 8120,16级,sql-server,sql-server-2008,Sql Server,Sql Server 2008,我有一个生产数据库DataProd,带有一个表IPSubnets。此表仅由两列组成:ID(此处未使用)和子网地址(IP_Subnets0) 现在,我想将每个IP_子网0条目与它所在的物理站点的名称相关联。由于单个站点可以有多个子网,因此我还希望使用关联子网的串联列表按站点对结果进行分组 到目前为止,我所做的工作如下: 我首先声明了一个站点列表表,因为我无法在数据库中创建新的永久表。您可以注意到Site3有两个子网 然后,我从@SiteList中选择SiteName,并使用Stuff像Group
DataProd
,带有一个表IPSubnets
。此表仅由两列组成:ID(此处未使用)和子网地址(IP_Subnets0
)
现在,我想将每个IP_子网0条目与它所在的物理站点的名称相关联。由于单个站点可以有多个子网,因此我还希望使用关联子网的串联列表按站点对结果进行分组
到目前为止,我所做的工作如下:
- 我首先声明了一个站点列表表,因为我无法在数据库中创建新的永久表。您可以注意到Site3有两个子网
- 然后,我从
中选择@SiteList
,并使用SiteName
像Stuff
一样在Group\u Concat
IP\u子网0上运行
- 最后,我按SiteName进行分组
STUFF
中的WHERE
子句的行上
我不明白问题出在哪里。我已经使用了类似的东西片段(虽然不是像这里那样声明表,而是数据库中的实际表),一切都进行得很顺利
有什么想法吗?您没有在这里聚合任何数据-按您的方式运行查询,而不是最后一行-即删除GROUP BY
语句
更新的查询
DECLARE @SiteList TABLE (SiteID Int Not Null Primary Key Identity(1,1),
SiteName VarChar(30),
Subnet VarChar(15)
)
INSERT INTO @SiteList
VALUES ('Site1', '192.168.10.0'), ('Site2', '192.168.20.0'),
('Site3', '192.168.30.0'), ('Site3', '192.168.40.0')
SELECT DISTINCT
SL.SiteName,
Subnets = STUFF((SELECT DISTINCT ','+ IP_Subnets0
FROM dbo.v_RA_System_IPSubnets
--WHERE IP_Subnets0 = SL.Subnet -- your where clause
WHERE SiteName = SL.SiteName -- you want to match on sitename
FOR XML PATH('')), 1, 1, '')
FROM
@SiteList SL
啊,是的,我的错。我不知道我怎么会认为我在这里做某种聚合。您建议如何获得我想要的结果(每个站点一行。每个关联的子网连接在一列中)?您需要调整where子句以查看站点名称而不是子网-我将在sec@Tuttu我更新了查询-让我知道它是否适合你。谢谢你的回答。几分钟后我自己弄明白了,但后来我在一个会议上被抓住了,无法在这里发布。谢谢您的时间。:)好的,如果有帮助的话,请考虑投票和/或标记它作为答案。
DECLARE @SiteList TABLE (SiteID Int Not Null Primary Key Identity(1,1),
SiteName VarChar(30),
Subnet VarChar(15)
)
INSERT INTO @SiteList
VALUES ('Site1', '192.168.10.0'), ('Site2', '192.168.20.0'),
('Site3', '192.168.30.0'), ('Site3', '192.168.40.0')
SELECT DISTINCT
SL.SiteName,
Subnets = STUFF((SELECT DISTINCT ','+ IP_Subnets0
FROM dbo.v_RA_System_IPSubnets
--WHERE IP_Subnets0 = SL.Subnet -- your where clause
WHERE SiteName = SL.SiteName -- you want to match on sitename
FOR XML PATH('')), 1, 1, '')
FROM
@SiteList SL