【发布时间】:2018-04-20 15:05:07
【问题描述】:
我们可以在 CTE 表达式中使用ORDER BY 子句吗?
;with y as
(
select
txn_Date_Time, txn_time, card_No, batch_No, terminal_ID
from
C1_Transaction_Information
where
txn_Date_Time = '2017-10-31'
order by
card_No
)
select * from y;
错误信息:
消息 1033,第 15 级,状态 1,第 14 行
ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效,除非还指定了 TOP、OFFSET 或 FOR XML。消息 102,第 15 级,状态 1,第 25 行
',' 附近的语法不正确。
【问题讨论】:
-
显然,你不能。我认为错误消息几乎可以回答您的问题。
-
不,除非您指定
TOP,否则您不能。为什么要对 CTE 进行排序? -
这是什么问题,他们明确表示“ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效,除非还指定了 TOP、OFFSET 或 FOR XML。 ”。你不能在那里使用
-
错误消息已经告诉您不,并且告诉您可以进行哪些更改以允许它。如果您有问题,则不清楚错误消息未涵盖您要问的内容。
标签: sql sql-server tsql stored-procedures