在PostgreSQL中将多行合并为多列
这是表中的数据 项目代码 名称/类型 名称值 1. 满的 项目1全名 1. 短的 项目1短名称 1. 一半 项目1半个名称 1. 半决赛 项目1半名称 2. 短的 项目2简称 3. 一半 项目3半个名称在PostgreSQL中将多行合并为多列,postgresql,case,Postgresql,Case,这是表中的数据 项目代码 名称/类型 名称值 1. 满的 项目1全名 1. 短的 项目1短名称 1. 一半 项目1半个名称 1. 半决赛 项目1半名称 2. 短的 项目2简称 3. 一半 项目3半个名称 您需要使用group by item_代码来获取每个组的一行,然后使用类似max()的聚合来获取每个组的非空值: select item_code, max( case name_type when 'full' then name_value
您需要使用group by item_代码来获取每个组的一行,然后使用类似max()的聚合来获取每个组的非空值:
select
item_code,
max(
case name_type
when 'full' then name_value
end
) as full_name,
max(
case name_type
when 'short' then name_value
end
) as short_name,
max(
case name_type
when 'half' then name_value
end
) as half_name
from t
group by 1;
@阿兰风为什么是马克斯?它们都是字符串值,对吗?试试不带,看看会发生什么。当您执行GROUPBY时,select expr会在许多行上进行迭代,并且您通常会通过聚合告诉您想要哪一行。