Bootstrap

SQL经验谈之结果集倒置

有一张t_money表,记录了钱款的流动。
以收入为例,假设有基金收入、国债、利息收入、投资收入。
表t_money字段如下:
字段数据类型备注
amount数字收入金额
type字符基金、国债、利息、投资

首先,统计各种类型收入之和,我们采用下面的SQL

select type as 类型,sum(amount)  as 总收入 
from t_money where uid=1009 group by type

执行结果如下:

类型总收入
基金1000
国债2000
利息1250
投资2800

group by后出现了多条记录,每个类型是一条记录。
但是,如果想让每种类型以查询字段的形式展示出来,该怎么实现呢?我们来看看下面这个写法
select

sum(if(types='基金',amount,0)) as 基金总收入,

sum(if(types='国债',amount,0)) as 国债总收入,

sum(if(types='利息',amount,0)) as 利息总收入,

sum(if(types='投资',amount,0)) as 投资总收入

from t_money where uid=1009

执行结果如下:

基金总收入国债总收入利息总收入投资总收入
1000200012502800

如此一来就实现了结果集倒置的效果。

;