小编典典

如何将使用公用表表达式的SQL查询转换为一个不包含的查询(对于SQL Server 2000)

sql

我刚刚找到了一种适当的解决方案,以解决如何查找键重复但在所有列中都不重复的行?,对存储过程进行了编码,然后得知该数据库卡在了SQL Server 2000中。

当然,我的解决方案在很大程度上依赖于Common Table Expressions。

谁能为我提供一套转换回SQL Server 2000方言的规则?

请注意,我有以下内容:

;
WITH CTE1 AS ( ... ),
CTE2 AS (SELECT ... FROM CTE1 ... ),
CTE3 AS (SELECT ... FROM CTE1 INNER JOIN CTE2 ...)
SELECT * FROM CTE3
WHERE criteria
ORDER BY sequence

这似乎使事情变得更加有趣。


更新: 所有CTE都不是递归的。


阅读 147

收藏
2021-04-28

共1个答案

小编典典

两种选择(允许的,都不是漂亮的-这就是为什么我们喜欢CTE的原因)

选项1

创建一个临时表(#,或者足够小@),并像使用CTE一样引用它。完成后放下。

选项2 将整个CTESELECT作为表格放在FROM查询的一部分中。

SELECT *
FROM  (SELECT *
       FROM table1) oldCTE
2021-04-28