1

私は3つのテーブルを持っています

ユーザー

ここに画像の説明を入力

出席

ここに画像の説明を入力

支払い

ここに画像の説明を入力

今、私は得るのが好きです

GroupID、UserName、MAX(PaymetDate)、MAX(出席日)

MAX(PaymetDate) が MAX(AttendenceDate) より小さい場合

これは私が試したことです

    SELECT  MAX(PaymetDate) AS Paied_Upto
    FROM Payment
    Group by GroupID   

    SELECT  MAX(AttendenceDate) AS Last_ AttendenceDate
    FROM Attendence FULL OUTER JOIN Users ON Attendence.Username = Users.Username
    Group by Users.GroupID

しかし、どうすればそれらを連携させることができるでしょうか?

感謝

4

3 に答える 3

0

これはあなたが必要とすることだと思います(SqlFiddle link):

select UserName, GroupID, MaxAttendanceDate, MaxPaymentDate
from (
  select 
    u.UserName,
    u.GroupID,
    (select max(AttendanceDate) 
       from Attendance a 
       where a.UserName = u.UserName) as MaxAttendanceDate,
    (select max(PaymentDate) 
       from Payment p
       where p.GroupID = u.GroupId) as MaxPaymentDate
  from [User] u
) x
where MaxAttendanceDate > MaxPaymentDate
于 2012-11-01T17:26:46.557 に答える
0

これを試して

select p.GroupID, u.UserName, MAX(p.PaymetDate), MAX(a.AttendenceDate)
from dbo.Users u
inner join dbo.Attandence a
    ON u.UserName = a.UserName
Inner join dbo.Payment p
    ON u.groupID = p.GroupID
GROUP BY p.GroupID, u.UserName
Having MAX(p.PaymentDate) < MAX(a.attendenceDate)
于 2012-11-01T17:18:08.323 に答える