SQL - 我如何创建一个旋转视图和现有 table
SQL - How do I create a view that pivots and existing table
我有一个 Table 用于用户创建的表单上的动态字段:
Table 的格式如下:
ID | FIELD NAME
-------------------
1 | Gross Gallons
为了与其他表形成连接,我需要创建一个如下所示的视图
ID_1
------------
Gross Gallons
如有任何帮助,我们将不胜感激
谢谢
这是制作动态字段的简单方法。
给定 table:
mysql> select * from dyna_field;
+------+---------------+
| id | field_name |
+------+---------------+
| 1 | Gross Gallons |
| 2 | Net Gallons |
| 3 | Total |
+------+---------------+
进行动态查询:
select
group_concat(concat('(case when id = ', id, ' then field_name else "" end) as ID_', id, ' ')) into @sql_case
from dyna_field
join(SELECT @sql_case:='') c;
set @sql_case = concat('select ', @sql_case, ', 1 as uid from dyna_field;');
prepare statement FROM @sql;
execute statement;
+---------------+-------------+-------+-----+
| ID_1 | ID_2 | ID_3 | uid |
+---------------+-------------+-------+-----+
| Gross Gallons | | | 1 |
| | Net Gallons | | 1 |
| | | Total | 1 |
+---------------+-------------+-------+-----+
我有一个 Table 用于用户创建的表单上的动态字段:
Table 的格式如下:
ID | FIELD NAME
-------------------
1 | Gross Gallons
为了与其他表形成连接,我需要创建一个如下所示的视图
ID_1
------------
Gross Gallons
如有任何帮助,我们将不胜感激
谢谢
这是制作动态字段的简单方法。
给定 table:
mysql> select * from dyna_field;
+------+---------------+
| id | field_name |
+------+---------------+
| 1 | Gross Gallons |
| 2 | Net Gallons |
| 3 | Total |
+------+---------------+
进行动态查询:
select
group_concat(concat('(case when id = ', id, ' then field_name else "" end) as ID_', id, ' ')) into @sql_case
from dyna_field
join(SELECT @sql_case:='') c;
set @sql_case = concat('select ', @sql_case, ', 1 as uid from dyna_field;');
prepare statement FROM @sql;
execute statement;
+---------------+-------------+-------+-----+
| ID_1 | ID_2 | ID_3 | uid |
+---------------+-------------+-------+-----+
| Gross Gallons | | | 1 |
| | Net Gallons | | 1 |
| | | Total | 1 |
+---------------+-------------+-------+-----+