【问题标题】:using WITH Query (CTE) in a select statement在选择语句中使用 WITH Query (CTE)
【发布时间】:2013-10-22 03:03:50
【问题描述】:

以下 CTE 查询运行良好:

    ;WITH QResult AS 
(SELECT 
    ROW_NUMBER() OVER (ORDER BY Ad_Date DESC) AS Row,
    * 
 FROM [vw_ads]
) 
SELECT 
    Co1l, Col2, 
    MAX(Row) OVER()
FROM QResult

我需要的是从这个查询select top(10),我已经尝试了以下

Select top (10) from With ...

但它抛出了以下异常:

关键字“with”附近的语法不正确。如果这个语句是 公共表表达式、xmlnamespaces 子句或更改跟踪 上下文子句,前一条语句必须以 分号。

如何从 WITH Query 中选择聚合函数?

【问题讨论】:

  • WITH(例如 CTE)必须始终在使用它的 SELECT 之前。我不确定为什么使用 TOP 的查询与原始查询有很大差异 - 只需在适当的位置添加“前 10 名”而不移动任何其他内容就足够了。

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


【解决方案1】:

没试过..

;WITH QResult AS  (
SELECT ROW_NUMBER() OVER (ORDER BY Ad_Date DESC) AS Row, * FROM [vw_ads] ) 
SELECT top(10)
Co1l, Col2, 
MAX(Row) OVER() FROM QResult

【讨论】:

  • TOP 10 按什么排序?如果没有 ORDER BY,输出将是任意且不可预测的。
猜你喜欢
  • 2015-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-14
  • 2018-08-23
  • 1970-01-01
  • 2020-12-13
相关资源
最近更新 更多