【问题标题】:T-SQL creating simple cte errorT-SQL 创建简单 cte 错误
【发布时间】:2018-04-02 01:46:12
【问题描述】:

我正在尝试用 T-SQL 编写一个非常简单的 CTE。你能告诉我为什么我得到一个不正确的语法错误吗?

use AdventureWorks2012
go   

With employeecount_CTE ([MaritalStatus], totalemployees) as
(
     select 
         [MaritalStatus], count(*) as totalemployees
     from 
         [HumanResources].[Employee]
     group by 
         [MaritalStatus]
)

【问题讨论】:

  • 您从未使用过 CTE,因此出现错误。
  • 了解如何提出好的问题。你提到你得到一个错误 - 那么你为什么要向每个人隐藏错误消息?这是其他人需要查看以了解您的问题的重要信息(一般而言)。
  • @SMor 你为什么不自己测试一下。它不会抛出错误消息。

标签: sql-server tsql common-table-expression


【解决方案1】:

根据文档,“CTE 后面必须跟一个引用部分或全部 CTE 列的 SELECT、INSERT、UPDATE 或 DELETE 语句。”

可以在以下位置找到 https://docs.microsoft.com/en-us/sql/t-sql/queries/with-common-table-expression-transact-sql

因此,如果您没有跟进这些语句之一,那么您将收到错误消息。以下代码应从 CTE 返回数据。

use AdventureWorks2012
go

With employeecount_CTE ([MaritalStatus], totalemployees) as
(
    select 
        [MaritalStatus], count(*) as totalemployees
    from 
        [HumanResources].[Employee]
    group by 
        [MaritalStatus]
)
select * 
from employeecount_CTE

【讨论】:

  • 非常感谢 - 非常简单的解释。我的源材料说 cte 可以被 SELECT、INSERT、UPDATE 或 DELETE 引用,而不是必须被引用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-13
  • 1970-01-01
  • 1970-01-01
  • 2011-03-21
  • 2012-05-31
  • 1970-01-01
相关资源
最近更新 更多