我有一个表data_table,我在其上定义了一个主键作为d_id,其他字段定义为f1到f25。 我有另一个表作为fields_name,字段名称存储为value f_id,field_name,order
我希望使用列名作为field_values存储在fields_name表中,从数据表中获取所有数据 我得到了什么,
f1 f2 f3 f4
a b c d
我想要的,
field_name1 field_name1 field_name1 field_name1
a b c d
帮助appriciated .....
答案 0 :(得分:0)
听起来你可能想做这样的事情:
select d_id,
max(case when field_name = 'Header' then value end) Header,
max(case when field_name = 'ID No.' then value end) ID_No,
max(case when field_name = 'Image' then value end) Image,
max(case when field_name = 'Name' then value end) Name
from
(
select d_id, f1 value, 'f1' col
from data_table
union all
select d_id, f2 value, 'f2' col
from data_table
union all
select d_id, f3 value, 'f3' col
from data_table
union all
select d_id, f4 value, 'f4' col
from data_table
) u
inner join fields_name f
on u.col = f.a_flag
group by d_id
答案 1 :(得分:0)
我不明白......如果您想重命名列名,可以使用AS
SELECT f1 AS "field_name1", f2 AS "field_name2", f3 AS "field_name3" FROM table
编辑:
尝试这样的事情:
SELECT f1,f2,f3,f4...
FROM data_table
LEFT JOIN data_table ON data_table.f1=(SELECT field_name FROM fields_names WHERE a_flag='f1') AND data_table.f2=(SELECT field_name FROM fields_names WHERE a_flag='f2')