在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连接字符串。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...