gpt4 book ai didi

sql-server - Sql Server - 子查询中的用户CTE

转载 作者:行者123 更新时间:2023-12-02 16:38:28 25 4
gpt4 key购买 nike

这个问题之前已经被问过 -

How we can use CTE in subquery in sql server?

建议的唯一答案是“只需在顶部定义 CTE 并在子查询中访问它?”

这可行,但我真的希望能够在以下场景中使用 CTE -

  1. 作为 SELECT 中的子查询

  2. 作为 SELECT 的 FROM 子句中的派生表

这两个都可以在 PostgreSQL 中使用。使用 Sql Server 2005,我收到“关键字 'with' 附近的语法不正确”。

我想要它的原因是我的大多数查询都是动态构建的,我希望能够定义一个 CTE,将其保存在某个地方,然后根据需要将其放入更复杂的查询中。

如果 Sql Server 根本不支持这种用法,我将不得不接受它,但我没有读过任何声明不允许的内容。

有人知道是否可以让它工作吗?

最佳答案

在 SQL Server 中,CTE 必须位于查询的顶部。如果动态构建查询,除了查询之外,还可以存储 CTE 列表。在将查询发送到 SQL Server 之前,您可以在查询前添加 CTE 列表作为前缀:

; with Cte1 as (...definition 1...),
Cte2 as (...definition 2...),
Cte3 as (...definition 3...),
...
...constructed query...

这假设您在 SQL Server 外部构建 SQL。

您还可以考虑创建 View 。 View 可以包含 CTE,并且它们可以用作子查询或派生表。如果您不经常生成 SQL(例如仅在安装期间或作为部署的一部分),那么 View 是一个不错的选择。

关于sql-server - Sql Server - 子查询中的用户CTE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6107865/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com