【发布时间】:2010-10-28 15:21:17
【问题描述】:
我正在使用 ROW_NUMBER() 和派生表从派生表结果中获取数据。
但是,我收到错误消息,告诉我在 GROUP BY 子句中没有适当的列。
这是错误:
选择列表中的列 'tblCompetition.objID' 无效,因为它既不包含在聚合函数中,也不包含在 GROUP BY 子句中
我错过了哪一栏?还是我做错了什么?在下面找到不工作的查询,以及工作的(更简单的)查询。
SQL Server 2008。
不工作的查询:
SELECT
objID,
objTypeID,
userID,
datAdded,
count,
sno
FROM
(
SELECT scc.objID,scc.objTypeID,scc.userID,scc.datAdded,
COUNT(sci.favID) as count,
ROW_NUMBER() OVER(PARTITION BY scc.userID ORDER BY scc.unqID DESC) as sno
FROM tblCompetition scc
LEFT JOIN tblFavourites sci
ON sci.favID = scc.objID
AND sci.datTimeStamp BETWEEN @datStart AND @datEnd
) as t
WHERE sno <= 2 AND objTypeID = @objTypeID
AND datAdded BETWEEN @datStart AND @datEnd
GROUP BY objID,objTypeID,userID,datAdded,count,sno
正在运行的简单查询:
SELECT objId,objTypeID,userId,datAdded FROM
(
SELECT objId,objTypeID,userId,datAdded,
ROW_NUMBER() OVER(PARTITION BY userId ORDER BY unqid DESC) as sno
FROM tblResdagbokenCompetition
) as t
WHERE sno<=2 AND objtypeid=@objTypeID
AND datAdded BETWEEN @datStart AND @datEnd
谢谢!
【问题讨论】:
标签: sql sql-server