我已经浏览了链接(Mysql Convert Column to row (Pivot table ))中的详细信息。由于列的数量很大,并且对所有列使用union all会很耗时。我决定使用给定链接中的最后一个解析。我能够运行查询,结果是:
问题是acct作为数据被包含,而且我想从结果中创建一个表。那么这些条目可以被排除吗?我如何从结果中创建一个表?(SQL新手)
The Code:
SET SESSION group_concat_max_len = 92160;
SET @target_schema='rd';
SET @target_table='pbc_gl';
SET @target_where='`acct`';
SELECT
GROUP_CONCAT(qry SEPARATOR ' UNION ALL ')
INTO @sql
FROM (
SELECT
CONCAT('SELECT `acct`,', QUOTE(COLUMN_NAME), ' AS `Business_Unit`,`', COLUMN_NAME, '` AS `value` FROM `', @target_table, '` WHERE ', @target_where) qry
FROM (
SELECT `COLUMN_NAME`
FROM `INFORMATION_SCHEMA`.`COLUMNS`
WHERE `TABLE_SCHEMA`=@target_schema
AND `TABLE_NAME`=@target_table
) AS `A`
) AS `B` ;
PREPARE s FROM @sql;
EXECUTE s;
DEALLOCATE PREPARE s;
1条答案
按热度按时间but5z9lq1#
将
AND COLUMN_NAME != 'acct'
添加到查询的WHERE
条件中,以从GROUP_CONCAT()
中排除该列。将
CREATE TABLE new_table_name
连接到查询的开头,使其使用此结果创建一个新表。