我尝试从使用 WITH 创建的 SalesData 进行选择, 查询是
with SalesData (TotalSold, OrderYear, TerritoryName)
AS (
SELECT SUM(soh.TotalDue) AS 'TotalSold'
, YEAR(soh.OrderDate) AS 'OrderYear'
, st.Name AS 'TerritoryName'
FROM Sales.SalesOrderHeader AS soh
INNER JOIN Sales.SalesTerritory AS st
ON soh.TerritoryID = st.TerritoryID
GROUP BY YEAR(soh.OrderDate)
,st.Name
)
SELECT TotalSold FROM SalesData
但是SSMS给了我这个错误:
消息208,级别16,状态1,行1无效的对象名称
我正在使用Avdentureworks数据库示例。
知道为什么会这样吗?虽然它在演示视频中得到了很好的执行 我在看。
答案 0 :(得分:0)
基于@DeepakPawar的评论,解决方案是
在前面加上分号
;with cte (...) as ....
还提到了@Pரதீப்-指的是以下WITH common_table_expression (Transact-SQL) documentation
当在批处理语句中使用CTE时,必须在语句之前加上分号