微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在SQL Server Compact中使用逗号分隔的值联接不起作用

如何解决在SQL Server Compact中使用逗号分隔的值联接不起作用

我有2张桌子,如下所示

CREATE TABLE [Chart]
(
   [Id] BIGINT NOT NULL IDENTITY (1,1),[Owner] NVARCHAR(100),[Identifier] NVARCHAR(128) NOT NULL,[Title] NVARCHAR(100),[Type] INT NOT NULL,[Category] INT NOT NULL,[CreatedDate] DATETIME NOT NULL,[ModifiedDate] DATETIME,[ExpireDate] DATETIME,[VisitCount] BIGINT NOT NULL,[ConfigurationId] BIGINT NOT NULL,[Theme] NVARCHAR(50)
);

ALTER TABLE [Chart] ADD CONSTRAINT [PK_dbo.Chart] PRIMARY KEY ([Id]);


CREATE TABLE [SelectedTag]
(
   [Id] BIGINT NOT NULL IDENTITY (1,[Identifier] NVARCHAR(4000),[TagName] NVARCHAR(4000),[Description] NVARCHAR(4000),[EuUnit] NVARCHAR(50),[EuRangeLow] NVARCHAR(50),[EuRangeHigh] NVARCHAR(50),[MinStats] FLOAT,[MaxStats] FLOAT,[Min] FLOAT,[Max] FLOAT,[GroupCode] NVARCHAR(4000)
);

ALTER TABLE [SelectedTag] ADD CONSTRAINT [PK_dbo.SelectedTag] PRIMARY KEY ([Id]);

我尝试了这个答案来查询Tag Count和TagList,以获得一个sql Server中效果很好的ID。

https://dba.stackexchange.com/q/112408/172901

select c.Identifier,count(c.Identifier) as TagCount,(
       select concat(',',s.TagName)  from selectedtag  as s
       where concat(',c.identifier,') like '%,'+s.identifier+',%'
       for xml path(''),type
       ).value('substring(text()[1],2)','varchar(max)') as TagList
 from chart c
 group by c.Identifier

enter image description here

但是对于sql Server紧凑型数据库,它不起作用

enter image description here

我使用CompactView通过sql Compact DB运行查询

https://sourceforge.net/projects/compactview/

查询sql Compact问题是什么?谢谢

解决方法

SQL Server Compact不支持XML数据类型和函数,并且嵌套的sSELECT也不起作用。编写一个普通选择,然后用代码执行其他处理。

,

尝试一下:

SELECT c.[Identifier],COUNT(c.[Identifier]) AS TagCount,STRING_AGG(ST.[TagName],',') AS TagList
FROM [Chart] C
INNER JOIN selectedtag ST
    ON C.[Identifier] = ST.[Identifier]
GROUP BY c.[Identifier];

由于您使用的是SQL Server 2017,因此可以使用STRING_AGG连接字符串。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。