SQL 行转列

文章介绍了如何使用SQL中的GROUPBY和CASEWHEN语句将查询结果的行转换为列,特别是在处理聚合数据时。通过示例查询展示了如何根据name字段分组,并计算不同属性(如年龄、身高、体重)的总和。在PostgreSQL中,还提到了crosstab函数作为替代方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SQL 行转列
使用的场景:把查询的后的某些结果行作为表头列
必要函数group by(当然如果是在pgsql当中也有crosstab交叉函数可以实现)
参考文章
【1】https://www.cnblogs.com/lurenjia1994/p/9535899.html

以下主要讲解group by 操作
示例图
在这里插入图片描述
想转化为
在这里插入图片描述
使用方式(最常用的)

select name,
sum(case when zbfm='年龄' then value else 0 end) as 年龄,
sum(case when zbfm='身高' then value else 0 end) as 身高,
sum(case when zbfm='体重' then value else 0 end) as 体重
from test group by name
having name like '%1' and length(name)=4 order by 年龄 desc

思考概念:把group by name当成name为一根后,相同name的后的 其他属性,你可以把它们同处理(sum()、count()…),在同处理时,在通过case when区分处理。
sum(case when…)就是对筛选后的数据进行同处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值