数据库行转列在现实需求中的用法

select t.客户姓名,sum(case when t.收款类型='首款' then t.金额 else 0 end as '首款'),sum(case when t.收款类型='尾款' then t.金额 else 0 end as '尾款') from table t
group by t.客户姓名

这段sql的意思 是 查询出所有客户收款信息 然后按客户分组    分组后  然后将这个客户的所有首款的金额放在一组 然后聚合 组成首款字段   所有尾款金额 放在一组 然后sum 聚合 组成尾款字段

最终查出 

统计的时候 或者 做运算的时候非常有用

如果需要列转行 可以使用union方式 比如我们上面这个表

select t.客户姓名,t.首款 from table t where type='首款'
union 
select t.客户姓名,t.尾款 from table t where type='尾款'
原文地址:https://www.cnblogs.com/LQBlog/p/6079969.html