在这种情况下如何编写SQL查询

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)

有人可以帮我写一个查询来获得这个输出吗?

Red*_*ter 7

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在没有任何修改的情况下添加更多的话将起作用.