在count sql中使用where

use*_*525 0 sql t-sql sql-server

我有这个SQL工作正常

SELECT COUNT(*) AS total, e.FirstName, e.LastName
FROM [Messages] AS m 
INNER JOIN Employees AS e ON m.SenderId = e.UserId
GROUP BY e.EmployeeId, e.FirstName, e.LastName
Run Code Online (Sandbox Code Playgroud)

但我希望还有完整的未读消息作为列.

我怎样才能在SQL中实现这一点?

SELECT 
    COUNT(*) AS total,
    COUNT(where m.isRead = false) AS totalUnreadMessages,
    e.FirstName, e.LastName
FROM 
    [Messages] AS m 
INNER JOIN
    Employees AS e ON m.SenderId = e.UserId
GROUP BY
    e.EmployeeId, e.FirstName, e.LastName
Run Code Online (Sandbox Code Playgroud)

jar*_*rlh 5

你几乎在那里,使用case表达式来进行条件计数:

SELECT Count(*) as total,Count(case when m.isRead = false then 1 end) as totalUnreadMessage,
    e.FirstName,e.LastName
FROM [Messages] as m 
inner join Employees as e on m.SenderId=e.UserId
group by e.EmployeeId, e.FirstName,e.LastName
Run Code Online (Sandbox Code Playgroud)