Have you missed parenthesis in your query, should it be something like this:
select
numeric_value, entity_id
from data_value
where
entity_id in (16029, 16026, 33768) and
category_id = 158
Anyway, you can easily pivot data by hand with aggregates (you just have to specify key if you want to get more than one row, it's not clear from your question how values should be grouped together):
select
--<some key>,
max(case when entity_id = 16029 then numeric_value end) as 16029,
max(case when entity_id = 16026 then numeric_value end) as 16026,
max(case when entity_id = 33768 then numeric_value end) as 33768
from data_value
where
entity_id in (16029, 16026, 33768) and
category_id = 158
--group by <some key>