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

Joh*_*ers 2 sql migration sql-server-2005 sql-server-2000

我刚刚找到了一个适当的解决方案,如何找到所有列中按键重复但不重复的行?编码存储过程,然后了解到数据库卡在SQL Server 2000上.

当然,我的解决方案很大程度上依赖于公用表表达式.

任何人都可以为我提供一套转换回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
Run Code Online (Sandbox Code Playgroud)

这似乎会让事情变得更有趣......


更新:没有CTE是递归的.

Bra*_*rad 6

两个选项(授予,两者都不漂亮 - 这就是我们喜欢CTE的原因)

选项1

创建临时表(#或者足够小@)并像CTE一样引用它.完成后放弃.

选项2 将整个CTE SELECT作为表格放入FROM查询部分.

SELECT *
FROM  (SELECT *
       FROM table1) oldCTE
Run Code Online (Sandbox Code Playgroud)