Fra*_*man 7 sql-server subquery common-table-expression
之前已经问过这个问题 -
建议的唯一答案是"只需在顶部定义您的CTE并在子查询中访问它?"
这有效,但我真的希望能够在以下场景中使用CTE -
作为SELECT中的子查询
作为SELECT的FROM子句中的派生表
这两个都在PostgreSQL中工作.使用Sql Server 2005,我得到"关键字'附近的语法不正确'和'".
我希望它的原因是我的大多数查询都是动态构造的,我希望能够定义一个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...
Run Code Online (Sandbox Code Playgroud)
这是假设您在 SQL Server 外部构建 SQL。
您还可以考虑创建视图。视图可以包含 CTE,并且它们可以用作子查询或派生表。如果您不经常生成 SQL(例如仅在安装期间或作为部署的一部分),那么视图是一个不错的选择。
归档时间: |
|
查看次数: |
6136 次 |
最近记录: |