table修改

table modification

如果我有这样一个table:

name attribute
john hat
john glasses
john jacket
Lisa hat
Lisa boots

我可以使用什么查询来获取:

name attribute1 attribute2 attribute3
John hat         glasses   jacket
Lisa hat         boots     NULL

改变TABLE table_name ADD column_name 数据类型

按照此约定通过此语法添加任意多的列

例如:

改变TABLE供应商 添加 supplier_name VARCHAR(50);

create local temporary table tmp_nr(NName varchar(50), maxnumber int) on commit preserve rows;
insert into tmp_nr
select Nname, count(*) as number
from T
group by Nname;

一个临时的table来存储属性的数量

select Nname,attributte,attributte2,attributte3 from
(
select Nname,
attributte,
lag(attributte,1) over(partition by Nname order by Nname) as attributte2,
lag(attributte,2) over(partition by Nname order by Nname) as attributte3,
row_number() over(partition by Nname order by Nname) as number
from T
)x inner join tmp_nr on x.Nname=tmp_nr.Nname
where x.number = tmp_nr.maxnumber

连接的目的是select只有包含每个人所有项目的行。