首页 > 解决方案 > INNER JOIN 与反列?

问题描述

所以基本上我有两张桌子

成员

MemberID      Name      LastName      Age      Gender
200           Sample    Guy           23       Male
201           Sample    Girl          24       Female

表记录

ID      MemberID        LoginDate      Status
1       200             3/27/2021      Login
2       200             3/27/2021      Logout
3       200             3/27/2021      Login
4       201             3/26/2021      Login
5       201             3/26/2021      Logout

我想做的是这样

MemberID      Name      LastName      Age      Gender       Login      Logouts
200           Sample    Guy           23       Male         2          1
201           Sample    Girl          24       Female       1          1

但我知道的唯一查询是

select a.MemberID, Name, LastName, Age, Gender
from tblmember a
inner join tblrecords b
on a.MemberID = b.MemberID

如何添加登录和注销计数器?对不起,我真的不擅长这个。请不要恨我。

标签: sql

解决方案


按表格的列分组tblmember。然后您可以使用聚合函数sum()来获取每条记录的计数

select a.MemberID, a.Name, a.LastName, a.Age, a.Gender,
       sum(case when b.status = 'Login' then 1 else 0 end) as Logins,
       sum(case when b.status = 'Logout' then 1 else 0 end) as Logouts
from tblmember a
inner join tblrecords b on a.MemberID = b.MemberID
group by a.MemberID, a.Name, a.LastName, a.Age, a.Gender

推荐阅读