如何在表中的单个列上使用TOP
函数以及计数函数?SQL Server 2005中的TOP函数没有给出正确的答案
我得到这个查询只有一个计数,我有35个条目应该来。 这是我的查询
select top(1) room_no, count(room_no) from rooms
如何在表中的单个列上使用TOP
函数以及计数函数?SQL Server 2005中的TOP函数没有给出正确的答案
我得到这个查询只有一个计数,我有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
执行。应该抛出一个错误。
COUNT函数在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
似乎是更有效的,以及(仅适用于小数据集测试虽然)。
select top(1)rd.room_no,count(distinct rd.room_no)available_d from room_details rd left join rooms r on rd.room_no = r.room_no where rd.room_status ='A'and rd.room_no not in (选择rd.room_no from room_details rd left join rooms r on rd.room_no = r.room_no where rd.room_status ='A' and((2012-08-03)> = r.check_in_date and(2012-08) -03)<= r.check_out_date) 或((2012-08-03)> = r.check_in_date 和(2012-08-03)<= r.check_out_date)和type ='delux')和type =' delux' Group By rd.room_no – 2012-03-06 11:54:19
我已经使用了group by子句bt m没有得到正确的答案,,它只计算第一排顶部..应该是crrct查询,它用于检查房间的可用性并且指定第一可用房间 – 2012-03-06 11:56:11
用“(来自room_details的选择计数(distinct room_no)”替换“count(distinct rd.room_no)”“。检查这是否给你你想要的。 – Umair 2012-03-06 12:03:18
用'group by'试过? – Mat 2012-03-06 11:35:23
发布样本数据来解释问题。 – danihp 2012-03-06 11:36:48
通过使用“TOP(1)”,您可以请求:*给我**一个**顶行*,这正是您所得到的。另外:你没有'ORDER BY',所以排序是**没有定义** - 它可以是任何东西。 – 2012-03-06 11:38:11