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…)就是对筛选后的数据进行同处理