如何解决在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
我使用CompactView通过sql Compact DB运行查询
https://sourceforge.net/projects/compactview/
解决方法
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 举报,一经查实,本站将立刻删除。