2016-06-23 3 views
-2

フォーラムを検索しましたが、回答が見つかりませんでした。だから私はこれがそこにあるなら謝罪する。これは私の心の中では単純だと思われますが、正しいコードを得ることができません。最終更新日2テーブルから出席しましたSQL Server

私は2つのテーブルを持っています。 STUDENT_TERMS_VIEWテーブル保持STTR_STUDENT,STTR_TERMおよびTERMSテーブルは、TERM_END_DATEを保持します。学生の最後の語をMAX(TERM_END_DATE)に基づいて選択する方法を見つける必要がありますが、学生1人あたりSTTR_TERMの重複行があります。私は1つの学生とその最後の学期に1行を取得する必要があります。

EDIT:Okだから両方のテーブルがTERMでリンクされています。

View Code Here

あなたが見ることができるように、私はあなたのクエリがの最大を取得しているMAX(TERM_END_DATE)

View SQL Image

+2

[最小限で完全で検証可能な例を作成する方法](http://stackoverflow.com/help/mcve)をお読みください。 –

+0

これら2つのテーブルの関係は何ですか?それほど情報が少ないのであなたを助けることは不可能です – GuidoG

+0

重複した行を持つクエリは何ですか?私たちがそれをデバッグするのを助けるためにあなたの質問にそれを加えてください。 –

答えて

0
SELECT * FROM 
(SELECT STUDENT_TERMS_VIEW.STTR_STUDENT, 
     STUDENT_TERMS_VIEW.STTR_TERM, 
     TERMS.TERM_END_DATE 
FROM STUDENT_TERMS_VIEW 
JOIN STUDENT_TERMS_VIEW ON TERMS.TERMS_ID = STUDENT_TERMS_VIEW.STTR_TERM 
ORDER BY TERMS.TERM_END_DATE DESC,STUDENT_TERMS_VIEW.STTR_STUDENT) 
GROUP BY STUDENT_TERMS_VIEW.STTR_STUDENT 
0

を引っ張っていたとしても、同じ学生のための重複した用語を取得しています(STTR_STUDENTおよびSTTR_TERM)の組み合わせ。各生徒の最大期間のみを取得したい場合は、GROUP BY STUDENT_TERMS_VIEW.STTR_STUDENTにしてください。以下の質問をお試しください。

SELECT stv.STTR_STUDENT, MAX(t.TERM_END_DATE) 
FROM STUDENT_TERMS_VIEW stv 
JOIN TERMS t ON t.TERMS_ID = stv.STTR_TERM 
GROUP BY stv.STTR_STUDENT 

あなたも、用語を取得しSTUDENT_TERMS_VIEWTERMSに戻ってそれに参加する必要がある場合。

SELECT s.STTR_STUDENT, s.STTR_TERM, t.TERM_END_DATE 
FROM (
    SELECT stv.STTR_STUDENT, MAX(t.TERM_END_DATE) AS 'MaxDate' 
    FROM STUDENT_TERMS_VIEW stv 
    JOIN TERMS t ON t.TERMS_ID = stv.STTR_TERM 
    GROUP BY stv.STTR_STUDENT 
) a 
JOIN STUDENT_TERMS_VIEW s ON s.STTR_STUDENT = a.STTR_STUDENT 
JOIN TERMS t ON t.TERMS_ID = s.STTR_TERM AND t.TERM_END_DATE = a.TERM_END_DATE 
関連する問題