0 sql
我有一个名为"出勤"的表,看起来像这样:
Sno SecurityGroup SecurityName Designation AttendanceStatus
----------------------------------------------------------------
1 JJ Ram officer present
2 JJ Raja Guards Present
3 JJ Rani LadyGuards Present
4 JJ Ramu officer present
Run Code Online (Sandbox Code Playgroud)
我需要输出作为每个指定中存在的证券数量的计数如下:
SecutityGroup Officer Guards LadyGuards
-----------------------------------------
JJ 2 1 1
Run Code Online (Sandbox Code Playgroud)
有人可以帮我写一个查询来获得这个输出吗?
select SecurityGroup,
sum(case when Designation = 'officer' then 1 end) as Officer,
sum(case when Designation = 'Guards' then 1 end) as Guards,
sum(case when Designation = 'LadyGuards' then 1 end) as LadyGuards
from Attendance
group by SecurityGroup
Run Code Online (Sandbox Code Playgroud)
或者,如果您可以在行中获取信息,则可以执行以下操作:
select SecurityGroup, Designation, count(*) as Count
from Attendance
group by SecurityGroup, Designation
Run Code Online (Sandbox Code Playgroud)
显然,第二种方法是优选的,因为它不那么脆,并且如果Designations在没有任何修改的情况下添加更多的话将起作用.