2017-03-24 6 views
0

私はMSSQLの初級ユーザーです。私は正しくクエリを完了できません。それは簡単な問題でなければなりません。それは作業を行いMSSQLでの簡単なクエリ。 SELECT

SELECT Pass_in_trip.date, Count(date) as numbOfPassengers 
From Pass_in_trip, Trip 
WHERE (Trip.trip_no = Pass_in_trip.trip_no AND Trip.town_from='Rostov') 
Group BY date 
HAVING COUNT(date) = 3 

この方法:

は、ここに私のコードです。しかし、私はMAX(COUNT(日))とCOUNT(日付)を比較したいと、私は問題を取得:

は 集計やサブクエリを含む式に集約関数を実行できません。

+3

(http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-old-style-joins.aspx)[明示的な使用は、加入] – scsimon

+0

あなたの問題は正しく記述されていません。 max(count())は何をしますか?あなたはグループを持っているので、カウントはちょうど1つの値であり、最大値を取ると同じ数値になります。 –

答えて

1

これはあなたが探しているものだと思います。

一般的なテーブル式を使用すると、クエリを繰り返す必要がなくなります。

WITH cte as 
    (
    SELECT Pass_in_trip.date, Count(date) as numbOfPassengers 
    FROM Pass_in_trip 
    INNER JOIN Trip 
     ON Trip.trip_no = Pass_in_trip.trip_no 
    WHERE Trip.town_from='Rostov' 
    GROUP BY date 
) 
SELECT date, numbOfPassengers 
FROM cte 
WHERE numbOfPassengers = (SELECT MAX(numbOfPassengers) FROM cte) 
関連する問題