【问题标题】:Join with comma separated values in SQL Server Compact not working在 SQL Server Compact 中加入逗号分隔值不起作用
【发布时间】:2020-11-02 06:03:49
【问题描述】:

我有 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,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 中运行良好

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

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

我使用 CompactView 通过 SQL compact DB 运行查询

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

我的查询有什么问题或 SQL Compact 问题?谢谢

【问题讨论】:

    标签: sql sql-server sql-server-ce sql-server-2017


    【解决方案1】:

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

    【讨论】:

    • 如何使用 SQL compact 处理我的查询?不可能?
    • 我编写查询以获取计数并检查计数条件,在源代码中加载更多信息。感谢您的信息
    【解决方案2】:

    试试这个:

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

    【讨论】:

    • @HienNguyen 这个 SQL Compact 是否支持循环?
    • SQL Compact 不支持 String_agg
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-08
    • 1970-01-01
    • 2012-09-08
    • 2019-01-23
    • 1970-01-01
    相关资源
    最近更新 更多