sql - 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, 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.Reference, p.StudyID, t.RefID, p.Primary_Secondary_Source, p.Linked_Publications, p.Publication_Type;
这会产生以下输出:
完整引用 | 参考 | 研究编号 | 数据库参考 | 小学/中学 | 链接的出版物 | 出版物类型 | 试验 | |
---|---|---|---|---|---|---|---|---|
1 | 无效的 | 无效的 | 测试 (2021) | TST_TST_1-1-测试(2021) | 无效的 | 无效的 | 无效的 | 85,示例,测试 1 |
2 | 无效的 | 无效的 | 测试 (2019) | TST_TST_1-2-测试 (2019) | 无效的 | 无效的 | 无效的 | 测试 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 中真正的视图概念无关。SQL 中的视图是您在数据库中创建并充当表的对象。SQL 视图可以读取也可以写入(INSERT、UPDATE、DELETE、MERGE...),但有一些限制。
因此,您必须在 SQL Server 中创建视图并将其用作 Access 中的表。
推荐阅读
- javascript - ajax 后 DOM 更改后重新初始化 Vue.js 组件
- azure - Azure Function 项目结构(C# 与 CSX)和最佳实践
- javascript - nvd3 折线图,x 轴上的数据多于 y 轴上的数据
- python - 无法使用 Python 创建虚拟环境
- sql - 在 SQL 查询中使用 where - 或条件在许多表中左连接
- angular - Angular 2+ - 如何将变量传递给 SASS :before / :after 伪选择器
- c# - 如何在 URL asp.net /aspx 中允许点、下划线?
- unity3d - 具有不同元数据的相同图像目标是否适用于云识别 (Vuforia)?
- .htaccess - htaccess 中的强制 SSL 仅转到主页
- javascript - 在 IE8 上使用 Vivid.JS 库