For a fetchAll() statement to return an empty array, it means that the query didn’t return any data. Does that table, in the selected database have any data in it? What does that same code produce without the PDO::FETCH_GROUP parameter?
I hope you are doing that dynamically, using a data-driven design, by having a data structure (array or database table) that you loop over to produce the result using one instance of the logic, rather than writing out code for every possible value?
Programming is a tedious activity. You should be getting the computer to do repetitive work for you, rather than spending your time pressing keys for 12 sets of code, that you than have to find and edit if a new value (type) gets added.