1

私のデータベースには 3 つのテーブルがあり、

Studentdata with columns studentid , studentname
Assessmentdata with columns studentid, attemptedondate
Activitydata with columns studentid, date

また、各テーブル行は現在のタイムスタンプで毎日更新されます。

識別に助けが必要です。Mostrecentdate 列は、2 つの異なるテーブルと 2 つの異なる列から、これらの列 attemptsondate と date の両方を比較した後、日付を取得する必要があります。列が activitydata と assessmentdata の両方で null の場合は、期待される出力で学生 ID を出力します示されているように、mostrecentdate は null です。

左外部結合は Studentdata テーブルで行う必要がありますが、これはどこに記述すればよいですか?

期待される出力は、

Studentid   studentname      mostrecentdate
 1           abc            2013-06-01 12:05
 2           def            2013-05-02 02:03
 3           kjr                  null

My current query is:
select S.StudentId,
S.StudentAccountName,
CASE WHEN Max(D.attemptedondate) >= Max(A.date) THEN Max(D.attemptedondate) 
     ELSE Max(A.date) END
 as MOSTRECENTDATE
from activitydata A
join Studentdata S on A.StudentId=s.StudentID
join Assessmentdata D on S. StudentID =D. StudentID
 group by S.StudentId,
S.StudentAccountName
4

2 に答える 2

1

試す

SELECT s.studentid, s.studentname, 
       NULLIF(GREATEST(COALESCE(a.max_date, 0), 
                       COALESCE(b.max_date, 0)), 0) mostrecentdate
  FROM Studentdata s LEFT JOIN
(
  SELECT studentid, MAX(attemptedondate) max_date
    FROM Assessmentdata
   GROUP BY studentid
) a ON s.studentid = a.studentid LEFT JOIN
(
  SELECT studentid, MAX(date) max_date
    FROM Activitydata
   GROUP BY studentid
) b ON s.studentid = b.studentid

また

SELECT s.studentid, s.studentname, mostrecentdate
  FROM Studentdata s LEFT JOIN
(
  SELECT studentid, MAX(max_date) mostrecentdate
    FROM
  (
    SELECT studentid, MAX(attemptedondate) max_date
      FROM Assessmentdata
     GROUP BY studentid
     UNION ALL
    SELECT studentid, MAX(date) max_date
      FROM Activitydata
     GROUP BY studentid
  ) a 
   GROUP BY studentid
) b ON s.studentid = b.studentid

出力例:

| | 学生 | 学生名 | 最新の日付 |
--------------------------------------------------
| | 1 | abc | 2013-06-01 12:05:00 |
| | 2 | デフ | 2013-05-02 02:03:00 |
| | 3 | kjr| (ヌル) |

これがSQLFiddleのデモです

于 2013-06-24T09:08:53.983 に答える