我正在寻找从查询中得到两件事,给定一组约束:
- 第一场比赛
- 比赛总数
我可以通过以下方式获得第一场比赛:
SELECT TOP 1
ID,
ReportYear,
Name,
SignDate,
...
FROM Table
WHERE
...
ORDER BY ... //I can put in here which one I want to take
然后我可以得到匹配计数,如果我使用
SELECT
MIN(ID),
MIN(ReportYear),
MIN(Name),
MIN(SignDate),
... ,
COUNT(*) as MatchCount
FROM Table
WHERE
...
GROUP BY
??? // I don't really want any grouping
我真的很想避免对所有结果进行分组和使用聚合函数。这个问题SQL Server Select COUNT without using aggregate function or group by建议答案是
SELECT TOP 1
ID,
ReportYear,
Name,
SignDate,
... ,
@@ROWCOUNT as MatchCount
FROM Table
这在没有 TOP 1 的情况下有效,但是当它在那里时,@@ROWCOUNT = 返回的行数,即 1。我怎样才能在没有任何分组的情况下获得 COUNT(*) 的输出(where 子句之后剩下的任何内容)或需要聚合所有列?
我不想做的是重复这些操作两次,第一行一次,@@ROWCOUNT 再一次。我没有找到可以正确使用 GROUP BY 的方法,因为我严格想要符合我的标准的项目数量,并且我想要列如果我对它们进行 GROUP 会丢弃这个数字 - 除非我误解了 GROUP BY。