Кажется, что вы действительно хотите, чтобы UNPIVOT данные, которые превращают столбцы в строки. Вы можете использовать следующее:
select col, value, sponsorid
from sponsor
unpivot
(
value
for col in (allow_r, allow_h, allow_c)
) unpiv
where sponsorid = 2
and value <> 0
См. SQL Fiddle with Demo.
Функция UNPIVOT делает то же самое, как с помощью UNION ALL запрос:
select 'allow_r' as col, allow_r as value, sponsorid
from sponsor
where sponsorid = 2
and allow_r <> 0
union all
select 'allow_h' as col, allow_h as value, sponsorid
from sponsor
where sponsorid = 2
and allow_h <> 0
union all
select 'allow_c' as col, allow_c as value, sponsorid
from sponsor
where sponsorid = 2
and allow_c <> 0;
См SQL Fiddle with Demo
Оба запроса дают результат:
| COL | VALUE | SPONSORID |
-------------------------------
| allow_r | 1 | 2 |
| allow_h | 1 | 2 |
совершенны, спасибо – user1706426