How to SELECT multiple COUNT(*) columns with each GROUP BY having a different WHERE clause?
This will give you the result you wanted but I'm not sure if it's the most flexible piece of code.
SELECT p.PersonId,
SUM(CASE
WHEN a.ActionTime >= '2014-01-15 00:00:00'
AND a.ActionTime < '2014-02-15 00:00:00'
THEN 1
ELSE 0
END) AS GroupA_Actions_Made,
SUM(CASE
WHEN a.ActionTime >= '2014-02-15 00:00:00'
AND a.ActionTime < '2014-03-15 00:00:00'
THEN 1
ELSE 0
END) AS GroupB_Actions_Made
FROM
Person p
JOIN
Action a on p.PersonId = a.PersonId
GROUP BY p.PersonId