Azure sql server 数据库和 MS Access - STRING_AGG 不是可识别的内置函数名称

问题描述

我在 Microsoft Azure 上托管了一个 sql 服务器数据库,并以 MS Access 作为前端。我在 SSMS 18.8 中写了一个查询如下

SELECT p.Full_Citation AS [Full Citation],p.Reference,p.StudyID AS [Study ID],t.RefID AS [Database Reference],p.Primary_Secondary_Source AS [Primary/Secondary],p.Linked_Publications AS [Linked Publications],p.Publication_Type AS [Publication Type],STRING_AGG(STUFF(COALESCE(' ' + Trial_Name,'') + COALESCE(' ' + Trial_Number,''),1,',') AS Trials
FROM FTS_Trials t
INNER JOIN Papers p
ON p.RefID = t.RefID
WHERE p.Project = 'TST_TST_1'
GROUP BY p.Full_Citation,p.StudyID,t.RefID,p.Primary_Secondary_Source,p.Linked_Publications,p.Publication_Type;

这会产生以下输出

完整引用 参考 学习编号 数据库参考 小学/中学 链接出版物 发布类型 试炼
1 NULL NULL 测试(2021 年) TST_TST_1-1-测试(2021 年) NULL NULL NULL 85,示例,测试 1
2 NULL NULL 测试(2019 年) TST_TST_1-2-测试(2019 年) NULL NULL NULL 测试 2

我遇到的问题是,当我尝试在 MS Access 中查询sql 视图中运行此代码时,它出现“表达式中的未定义函数‘STRING_AGG’。”。任何人都可以解释为什么这在 SSMS 中有效但在 Access 中无效,我是否遗漏了一些非常明显的内容

我还尝试了一种不同的方法,仅使用 STUFF() 函数,其方式与此问题 T-SQL Concatenate & group multiple rows into a single row 的第一个答案类似。同样,这在 SSMS 中运行良好,但 MS Access 告诉我语法中存在查询错误。此外,这个查询没有像上面那样结合 Trial_Name 和 Trial_Number。我可以使用 MS Access 采取其他方法吗?

对于一点背景,查询将附加到用户单击的按钮上,理想情况下需要显示查询,然后将其导出到 Excel 文件。我已经为其他查询设置了这个,但想要将给定引文的所有试验(Trial_Name + Trial_Number)连接在一行中,这使得这种情况更难解决

解决方法

Access 中“视图”的概念与 SQL 中 VIEW 的真实概念无关。 SQL 中的视图是您在数据库中创建并充当表的对象。 SQL 视图可以读取,也可以写入(插入、更新、删除、合并...),但有一些限制。

因此您必须在 SQL Server 中创建视图并将其用作 Access 中的表。