似乎只有Sybase SQL Anywhere支持 WITH:http : //dcx.sybase.com/1100/en/dbusage_en11/commontblexpr-s-5414852.html
...但在 Sybase ASE 中没有:(
有人可以建议 Sybase ASE 中是否存在等效结构?还有其他方法可以实现东西而不是使用 WITH,但我们计划重新调整一些动态生成的 SQL 以在 Sybase 中运行,并且非常需要支持 WITH 或接近该语法的东西。
似乎只有Sybase SQL Anywhere支持 WITH:http : //dcx.sybase.com/1100/en/dbusage_en11/commontblexpr-s-5414852.html
...但在 Sybase ASE 中没有:(
有人可以建议 Sybase ASE 中是否存在等效结构?还有其他方法可以实现东西而不是使用 WITH,但我们计划重新调整一些动态生成的 SQL 以在 Sybase 中运行,并且非常需要支持 WITH 或接近该语法的东西。
ASE 不支持公用表表达式(例如,WITH 子句)。
(显而易见的)解决方法是#temp 表、视图、物化视图(又名预计算结果集)、表变量(ASE 16.0 SP02+),以及在有限的情况下可能派生表和/或(相关)子查询。
注意:我不使用 SQL Anywhere,所以不确定这在技术上是否可行,但 fwiw ...
我认为可能有一种方法可以设置从 SQL Anywhere 到 ASE 的代理表,其想法是从 SQL Anywhere 中运行您的 CTE/WITH 查询。
'当然,即使这在技术上是可行的,但您正在考虑维护 SQL Anywhere 数据库的额外开销,并且此类服务器间查询的性能可能是不可接受的(例如,将所有数据从 ASE 拉到 SQL Anywhere 中,实际上,实现 CTE)。