0

I have written an sql to get ticket information per user on a database.

select u.realname,count(t.id) as ct,t.Status
from Tickets t,Users u
where u.id=t.Owner and (t.status='New' or t.status='Stalled' or t.status='Open')
group by u.realname,t.status;

it gives output like this

| Enoch Root           |     1 | new     |
| Enoch Root           |     1 | stalled |
| xyz   Chan           |     1 | open    |
| Jim                  |    22 | stalled |

but what i am looking for is users against status

like

       open   stalled  new
 root    1       10      14

Please let me know

Marc B
  • 356,200
  • 43
  • 426
  • 500
kbang
  • 694
  • 9
  • 25

2 Answers2

0
SELECT
  u.realname,
  SUM(t.status='Open') AS `Open`,
  SUM(t.status='Stalled') AS `Stalled`,
  SUM(t.status='New') AS `New`
FROM Tickets t INNER JOIN Users u
     ON u.id=t.Owner
WHERE (t.status='New' OR t.status='Stalled' OR t.status='Open')
GROUP BY
  u.id, u.realname
fthiella
  • 48,073
  • 15
  • 90
  • 106
0
select u.realname, 
  sum( if( t.status = 'New', 1, 0 ) ) as new, 
  sum( if( t.status = 'Stalled', 1, 0 ) ) as stalled, 
  sum( if( t.status = 'Open', 1, 0 ) ) as open
from Tickets t, Users u
where 
  u.id = t.Owner and 
  t.status in ( 'New', 'Stalled', 'Open' )
group by u.realname
devanand
  • 5,116
  • 2
  • 20
  • 19