Sql server tsql使用group by连接表

Sql server tsql使用group by连接表,sql-server,tsql,Sql Server,Tsql,有两张桌子吗 StudentID MeetingID TeacherID Date 001 1002581 1056 10-12-2012 001 1006789 1056 10-13-2012 001 1006754 1058 10-13-1012 再来一张B桌 StudentID MeetingID TeacherID

有两张桌子吗

    StudentID   MeetingID  TeacherID   Date
     001         1002581    1056      10-12-2012
     001         1006789    1056      10-13-2012
     001         1006754    1058      10-13-1012
再来一张B桌

     StudentID      MeetingID    TeacherID     Date        Value
         001          1002581      1056         10-12-201     15
         001          1002856      1056         10-20-2012    21
条件是表a中特定师生会议的最大(日期)与表B中同一师生会议的最大(日期)值相匹配。我希望看到的结果集类似于

   StudentID       MeetingID     TeacherID     Date          Value
   001             1006789       1056          10-20-2012     21

如何实现上述结果Set

首先,我很好奇为什么您在两个单独的表中有相同的数据,而不是通过ID链接它们。即会议->值

根据您的要求,这应该是可行的。这将查找两个表中出现的最新会议

这是小提琴:

--SQL小提琴-


抱歉,无法很好地格式化。

嗨,迈克,谢谢格式化。你能告诉我粘贴后如何格式化代码吗?如果我有多个学生怎么办?它仍然返回一行,嗯,对你在这里给出的结果集没有真正的把握。您说过希望表a上的最大日期与表B上的最大日期相匹配。当我查看您的结果时,应该不是值21记录,而是值15记录。。。。
SELECT B.* 
FROM B INNER JOIN A ON B.StudentID = A.StudentID AND B.MeetingID = A.MeetingID AND B.Date = A.Date
WHERE B.Date = (SELECT MAX(Date) FROM A WHERE A.StudentID = B.StudentID AND A.MeetingID = B.MeetingID)
SELECT TOP 1 c.StudentID,c.MeetingID,c.TeacherID,c.tab1_dates,c.VALUE
FROM 
(
    SELECT a.StudentID,a.MeetingID,a.TeacherID,a.Dates AS tab1_dates,b.Dates AS tab2_dates,b.VALUE,
    ROW_NUMBER() OVER (ORDER BY a.Dates,b.Dates) AS RN1
    FROM tab2 b
    INNER JOIN
    (
      SELECT StudentID,MeetingID,TeacherID,Dates FROM tab1
    ) a
    ON b.StudentID = a.StudentID
    AND b.TeacherID = a.TeacherID
        ) c
ORDER BY RN1 DESC