我会尝试这样的方法:
declare @Users Table (UserID int)
declare @Logins Table (LoginID int, UserID int, LoginDate DateTime, Success Bit)
Insert into @Users
select 1 union select 2
insert into @Logins
select 1, 1, '2010-10-13 6:00:00', 1
union
select 2, 1, '2010-10-13 7:00:00', 0
union
select 3, 1, '2010-10-13 8:00:00', 1
union
select 4, 2, '2010-10-13 6:00:00', 0
union
select 5, 2, '2010-10-13 7:00:00', 1
union
select 6, 2, '2010-10-13 9:00:00', 1
union
select 7, 2, '2010-10-13 10:00:00', 1
Select UserID,
[1] As Successful,
[0] As Unsuccessful,
LoginDate As LoginDate
From (
SELECT
u.UserID,
l.LoginID,
l.Success,
Max(LoginDate) Over (Partition By u.UserID) As LoginDate
FROM @Users u
INNER JOIN @Logins l ON u.UserID = l.UserID
) Data Pivot (
Count(LoginID) For Success In (
[0], [1]
)
) Result