有一张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
执行结果如下:
基金总收入 | 国债总收入 | 利息总收入 | 投资总收入 |
1000 | 2000 | 1250 | 2800 |
如此一来就实现了结果集倒置的效果。