SQL Server 2008 R2 - 来自2014 SSMS的查询,但也失败了代码。
奇怪 - 对表B的第一次引用有效,第二次对“无效对象B”进行失败。错误。我究竟做错了什么? GO没有帮助。
WITH B as (SELECT BatchOutId, SettleMerchantCode, BatchDate, BatchStatusCode, BatchTransCnt, BatchTotAmt, BatchAdjustAmt, BatchAdjustCnt
FROM MAF01
GROUP BY BatchOutId, SettleMerchantCode, BatchDate, BatchStatusCode, BatchTransCnt, BatchTotAmt, BatchAdjustAmt, BatchAdjustCnt)
SELECT * FROM B ORDER BY BatchOutId DESC
SELECT * FROM B ORDER BY BatchOutId DESC
答案 0 :(得分:2)
这是预期的。
CTE仅适用于下一个声明。它们只是命名查询。
您需要
取决于您期望发生的事情。
答案 1 :(得分:0)
cte仅对一个查询有效,而不是整个批次。因此,一旦执行了第一个SELECT * FROM B,该查询就完成了。下一个查询不再能够访问第一个查询使用的cte。
答案 2 :(得分:0)
我知道这必须重复
您可以拥有多个CTE,但只能有一个陈述 两个Select是两个语句
如果使用#temp,则可以有多个语句