GROUP BY
はテーブルを一緒に破壊します。したがって、GROUPEDでない列を使用するとデータに問題が発生します。
select Train_B_N, Duration,Date,Trainer,Train_code,Training_Program
from Train_M
group by Train_B_N
ANSI
標準では、GROUP BY
は集約関数ではありませんSELECT
声明にあるすべての列を含める必要があります。例外なく。
WITH CTE AS (SELECT TRAIN_B_N, MAX(DATE) AS Last_Date
FROM TRAIN_M
GROUP BY TRAIN_B_N)
SELECT A.Train_B_N, Duration, Date,Trainer,Train_code,Training_Program
FROM TRAIN_M AS A
INNER JOIN CTE ON CTE.Train_B_N = A.Train_B_N
AND CTE.Last_Date = A.Date
この例では、そのIDで使用されている最後のトレーニングプログラム、トレーナー、train_codeが返されます。 これは、MAX(DATE)
aggregate関数から実行されます。この関数は、テーブルに最大(最新)のDATEを保持します。また、GROUP BYは行を別のグループに分割したため、JOINは表の結果のサブセットのみを返します。
SQL
はX #Matching_rowsを#table_rowsを返すことに注意してください、そして、あなたの#Matching_rows cardinality
が1より大きい場合は、余分な行を取得します。
ルックアップGROUP BY - MSDN。最初に構文例以外のものをすべて読んで、その節の目的が何であるかを解読することをお勧めします。
また、次回は、「GROUP BY、SQL」のような問題を尋ねるか、IDE
(SSMS
またはそれ以外の場合)のエラーコードを挿入してください。あなたは何がうまくいくのかを理解する必要があります...そしてSO
はあなたのGoogle検索エンジンではありません。 ;)
あなたはこれがSQLに関するすべてのことを学ぶことに興味を持っていることを願っています。 :D
あなたは何をしていますか?どんな助けが必要ですか? –
@ PM77-1編集済み。 – KyLim
各グループにどの列を予約しますか? – Blank