Chinaunix首页 | 论坛 | 博客
  • 博客访问: 251235
  • 博文数量: 93
  • 博客积分: 3001
  • 博客等级: 中校
  • 技术积分: 1050
  • 用 户 组: 普通用户
  • 注册时间: 2009-07-11 13:20
文章分类

全部博文(93)

文章存档

2011年(1)

2009年(92)

我的朋友

分类: Mysql/postgreSQL

2009-07-11 14:30:40

mysql的手册中对SUM函数的介绍非常简单和含糊, 今天在搜资料的时候发现SUM函数的参数还可以加入条件判断.
比如有如下的一个表:

日期             支出项目名称            支出类别            支出金额            类别编号

2006-07-03         
购买发票         发票           709       2
2006-07-05        
华夏干红2(单价32)            吧台支出         64    3
2006-07-05        
鲜橙多33(单价1)              吧台支出         33    3
2006-07-05        
购雪碧,百事42(单价2)          吧台支出         84    3
2006-07-05        
购菜金           其它         180.6    1
2006-07-05        
手机网络费      办公用品         8    4
2006-07-05         
手机SIM卡一张          办公用品         20    4
2006-07-05        
手机英华OK106一台             办公用品         310    4
2006-07-05        
购饮料人工费       吧台支出         3    3
2006-07-05        
冰点水17(单价2)            吧台支出         34    3
2006-07-06        
广告费    其它          900    1
2006-07-06        
微波炉    其它          299    1
2006-07-06        
垃圾桶    其它          30    1
2006-07-06        
意见簿    其它          20    1
2006-07-06        
冰糖夹    其它          4    1
2006-07-06        
开刀    其它          6    1
2006-07-06         
修正液    办公用品         2    4
2006-07-06        
圆珠笔芯          办公用品         8    4
2006-07-06        
打码机,印泥          办公用品         7    4
2006-07-06        
收银夹    办公用品         9    4


现在要对每天, 每种支出类别的总和建立一个视图,可以用这样的语句:

CREATE VIEW `tbl_view` AS SELECT
日期,
SUM( IF(
类别编号 =1, 支出金额, 0 ) ) AS 其它支出,
SUM( IF(
类别编号 =2, 支出金额, 0 ) ) AS 发票,
SUM( IF(
类别编号 =3, 支出金额, 0 ) ) AS 吧台支出,
SUM( IF(
类别编号 =4, 支出金额, 0 ) ) AS  办公用品
FROM `tbl`
ORDER BY `
日期`
GROUP BY `
日期`


建好的视图 tbl_view会是这个样子:

日期                其它支出                发票                吧台支出                办公用品
2006-07-03        0        709                0        0
2006-07-05        180.6        0                218        138
2006-07-06        1253        0                0        26


语句 SUM( IF( 类别编号 =1, 支出金额, 0 ) ) AS 其它支出,
表示当类别编号为1的时候对支出金额列求和, 第三个参数0不太清楚,
大概是缺省值为0的意思吧.

 

阅读(1247) | 评论(0) | 转发(0) |
0

上一篇:创建视图--1

下一篇:MYSQL UPDATE语句

给主人留下些什么吧!~~