2012-03-06 10 views
0

TOP関数をSQL Server 2005でテーブルの1つの列でcount関数と共に使用するにはどうすればよいですか?SQL Server 2005のTOP関数で正しい答えが得られません

このクエリでは、35個のエントリが必要です。 これは

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

'group by'で試しましたか? – Mat

+1

サンプルデータを投稿して質問を投稿してください。 – danihp

+1

あなたは 'TOP(1)'を使って次のものを要求しています:*私に**一番上の行*を与えてください。また、あなたは 'ORDER BY'を持っていないので、順序は**定義されていません** - 何でもかまいません。 –

答えて

1

はあなたが欲しいもののように思える私のクエリで以下の通りです:それはgroup byなしで実行する理由ところで、私は疑問に思う

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

。エラーを投げるべきです。

0

TOPの後にCOUNT関数が評価されます。だからこそ、カウントのために1つだけを取得しているのです。あなたが欲しいものは、このようなものです。

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 

は(のみただし、小さなデータセットでテスト)だけでなく、より効率的であるように思われます。

+0

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 ここで、rd.room_status = 'A'とrd.room_noにはない rd.room_no = r.room_no ここで、rd.room_status = 'A' と((2012-08-03)> = r.check_in_date と2012-08年の部屋番号からrd.room_noを選択します。 -03)<= r.check_out_date) または(2012-08-03)> = r.check_in_date および(2012-08-03)<= r.check_out_date)、タイプ= 'delux')およびタイプ= ' delux ' グループによってrd.room_no –

+0

私は正しい答えを得ていないグループバイセクションbtを使用して、その最初の一番上の行をカウントします。何がcrrctクエリする必要があります、それは部屋の可用性をチェックするためです"count(distinct rd.room_no)"を "(select count(room_detailsからdistinct room_no))"に置き換えて、最初の利用可能な部屋を割り当てます。 –

+0

これがあなたの望むものを与えるかどうか確認してください。 – Umair

関連する問題