Простым переносимым решением является использование union all
, однако для выравнивания типов данных может потребоваться дополнительное приведение (я бы предположил, что age
имеет числовой c тип данных):
In MS Access:
select 'name' col, name val from mytable
union all select 'age', CStr(age) from mytable
union all select 'education', education from mytable
union all select 'city', city from mytable
В MySQL:
select 'name' col, name val from mytable
union all select 'age', cast(age as char(3)) from mytable
union all select 'education', education from mytable
union all select 'city', city from mytable
В SQL сервере это проще и эффективнее сделать с помощью cross apply
:
select x.*
from mytable t
cross apply (values
('name', name),
('age', cast(age as varchar(3)),
('education', education),
('city', city)
) x(col, val)