sql - 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
如何添加登录和注销计数器?对不起,我真的不擅长这个。请不要恨我。
解决方案
按表格的列分组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
推荐阅读
- powershell - 使用 powershell 操作 AD 组 - 提示选择中的每个对象是或否?
- c# - C# framework 2.0 从方法返回两个值
- javascript - 我需要在量角器中关闭并打开新浏览器
- android - 禁用三星浏览器的弹出播放器功能
- c - 尝试在 C 中实现 mini-http 持久服务器
- ruby - 如何让 SASS 在 Mac 的 Netbeans 中工作
- excel - VBA函数将公式插入到单元格中,并嵌入了另一个vba函数
- r - 使用 R 搜索文本字符串并返回下一行中的文本字符串
- python-3.x - 如何使用 seaborn factorplot 绘制多个图?
- javascript - 如何将字符串从php传递给js