当使用像SUM
,COUNT
或MAX
聚合函数,并希望也从数据中选择其他列,那么你在查询中使用的另一列(S)需要将数据分组。
所以,你需要写类似:
WITH QResult AS
(SELECT
ROW_NUMBER() OVER (ORDER BY Ad_Date DESC) AS Row,
*
FROM [vw_ads]
)
SELECT Co1l, Col2, MAX(Row)
FROM QResult
GROUP BY Col1, Col2
这也意味着你需要明确地拼出你想要的列 - 在任何情况下是个好主意。 GROUP BY
子句中不能使用*
。
更新:根据您的意见,我想你真正想要的是这样的:
(看到更新#2 - 马丁·史密斯的建议是比我原来的想法,甚至更好地在这里)
WITH QResult AS
(SELECT
ROW_NUMBER() OVER (ORDER BY Ad_Date DESC) AS Row,
*
FROM [vw_ads]
)
SELECT
Co1l, Col2,
MaxRow = (SELECT MAX(Row) FROM QResult)
FROM QResult
这将为您提供CTE的最大值,对于结果集的每一行,值相同。
更新#2:马丁·史密斯的建议是这样的:
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
,当然还有,这个工作,太 - 甚至比我的解决方案更有效。谢谢,马丁!
你究竟想要展示什么。也许提供一些示例数据? –