Sql server 2005 SQL Server 2005中的TOP函数未给出正确答案

Sql server 2005 SQL Server 2005中的TOP函数未给出正确答案,sql-server-2005,Sql Server 2005,如何在SQL Server 2005中对表中的单个列使用TOP函数和count函数 对于这个查询,我只得到一个计数,其中应该有35个条目。 这是我的问题 select top(1) room_no, count(room_no) from rooms 似乎您想要的是以下内容: select room_no,count(room_no) from rooms group by room_no 顺便说一句,我想知道为什么它会在没有group by的情况下执行。应引发错误。计数函数在TOP之后求值

如何在SQL Server 2005中对表中的单个列使用TOP函数和count函数

对于这个查询,我只得到一个计数,其中应该有35个条目。 这是我的问题

select top(1) room_no, count(room_no) from rooms

似乎您想要的是以下内容:

select room_no,count(room_no)
from rooms
group by room_no

顺便说一句,我想知道为什么它会在没有group by的情况下执行。应引发错误。

计数函数在TOP之后求值。这就是为什么你只得到一个计数。你想要的是这样的东西

SELECT TOP(1) dbo.Table.Column1, (SELECT COUNT(*) FROM dbo.Table)
FROM dbo.Table
另外,如前所述,你真的应该订购的东西

编辑:这也适用于:

SELECT TOP(1) dbo.Table.Column1, COUNT(*) OVER() AS Total
FROM dbo.Table

似乎只有在小数据集上测试才更有效。

尝试使用group by?post示例数据来说明问题。通过使用TOP1,您的请求是:给我最上面一行,这正是您得到的。另外:您没有订单,因此未定义订单-可以是任何内容。选择top1rd.room_no,countdistinct rd.room\u no available\u d from room\u details rd left join room r on rd.room\u status='A'和rd.room\u no not in选择rd.room\u no from room\u details rd left join room r on rd.room\u status='A'和2012-08-03>=r.check\u in\u日期和2012-08-03=r.check\u日期和2012-08-03我使用过group by子句bt m没有得到正确答案,它只计算第一行。。crrct查询应该是什么,它用于检查房间的可用性,并通过从房间详细信息中选择countdistinct room\u no来分配第一个可用房间Replace countdistinct rd.room\u no。检查一下这是否能满足你的需求。你说它不起作用是什么意思。需要更多的信息!错误错误的结果?等等等等等等。