courseName = 'Music'を最新の日付で取得するにはどうすればよいですか?同じオブジェクト名で最新のレコードを日付で取得する
courseName | dateOfEnrollment
----------------|-----------------------
Music | 2016-07-24
Art | 2016-07-01
Art | 2016-07-23
Music | 2016-07-25
私はそれがエラーを返し
SELECT courseName, dateOfEnrollment FROM MyDatabase.dbo.courseEnrollment WHERE courseName = 'Music' AND GETDATE() >= MAX(dateOfEnrollment)
以下のステートメントを使用してみましたよう:それがnullでない場合
An aggregate may not appear in the WHERE clause unless it is in a subquery contained in a HAVING clause or a select list, and the column being aggregated is an outer reference.
私の究極の目標は、IF文でその文を置くことです、私はテーブルに新しいデータを挿入します。
更新(私の答え):
は、この私のために働いている:
IF EXISTS (SELECT TOP 1 courseName, dateOfEnrollment FROM courseEnrollment WHERE courseName = 'Music' ORDER BY dateOfEnrollment DESC)
*Insert data into the table*
ELSE
*No need to insert*
クエリがどのように見えるが、あなたの主な目標を想定しなければならない方法です
2または二つ以上のレコードが起こるどんなその後、最新の同じ日付が含まれている場合は? – Sadikhasan
そこに2つの問題が見つかりました。 1) 'ORDER BY dateOfEnrollment'は、日付の昇順(ただし、降順であることが予想される)を意味する。2)最新の日付の音楽の中に複数の項目がある場合、常に出力に1がある。 – 1000111
こんにちは@Damiano、あなたの返事をありがとう。私はどのようにIF文にクエリ全体を入れることができるか分かりますか?たとえば、結果の戻り値がない場合、テーブルは更新されません。それ以外の場合はテーブルを更新します。 – YWah