我需要在mysql中从原始表创建一个数据透视表,但我需要具体说明我想将数据带入我正在制作的新表中的哪些行。 我猜我可以在查询中使用'where'子句创建数据透视表,但我不确切知道如何。我有一个代码,允许我从其原始创建一个数据透视表。它选择两行,每个'max'函数对应一行,并将它们转换为列。
create table `transp_table` as
select * from (
select original_table,
max(case when ID = 1.01 then value else 0 end) '1.01',
max(case when ID = 1.02 then value else 0 end) '1.02'
from(
select ID, `month_1` value, 1 descrip
from disp
union all
select ID, `month_2` value, 2 descrip
from disp
union all
select ID, `month_3` value, 3 descrip
from disp
union all
select ID, `month_4` value, 4 descrip
from disp
union all
select ID, `month_5` value, 5 descrip
from disp
union all
select ID, `month_6` value, 6 descrip
from disp
union all
select ID, `month_7` value, 7 descrip
from disp
union all
select ID, `month_8` value, 8 descrip
from original_table
) src
group by descrip
) as `transp_table`;
它适用于创建数据透视表,但对于此模型,我需要为每个特定ID
添加“最大”功能。而且从original_table中,有很多行。例如,在original_table中有一个名为'type_of_product'的列,我需要选择其中包含特定字符串的行。有没有一个查询,我可以选择行来制作数据透视表,而不必像上面的例子中那样为每一个键入?这是带有original_table样本的结构:
CREATE TABLE original_table (
`ID` float not null, `type_of_product` text, `month_1` int,
`month_2` int, `month_3` int, `month_4` int, `month_5` int, `month_6` int)
INSERT INTO `original_table` (
ID, type_of_procduct, `month-1`, `month_2`, `month_3`, `month_4`, `month_5`, `month_6`)
VALUES
(1.01, 'TV', 50, 53, 20, 33, 134, 0),
(1.02, 'DVD', 36, 12, 5, 0, 0, 26),
(2.01, 'DVD', 11, 12, 30, 5, 22, 0),
(3.01, 'CD', 0, 0, 3, 1, 0, 19),
(3.02, 'TV', 3, 6, 0, 0, 10, 15),
(3.03, 'TV', 500, 20, 0, 0, 0, 1);