'How to prevent over using SELECT just for column name?

as titled, is there any way I can make it in a way so that I don't have to call so many query just for column name?

select val,  
(select val1 FROM data WHERE size='a' AND cat ='1' ) as cat1_a,  
(select val1 FROM data WHERE size='a' AND cat ='2' ) as cat2_a,  
(select val1 FROM data WHERE size='b' AND cat ='1' ) as cat1_b,  
(select val1 FROM data WHERE size='b' AND cat ='2' ) as cat2_b,  
(select val1 FROM data WHERE size='c' AND cat ='1' ) as cat1_c,  
(select val1 FROM data WHERE size='c' AND cat ='2' ) as cat2_c  
from data  


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source