mysql表名叫 eee id name renwulb(任务类别) content(任务细节) atime(时间) 1 小王 扫地 清扫了好 2013-04-04 12:07:06 2 小王 擦玻璃 擦不干净 2013-05-05 12:07:06 3 小李 做饭 做不好 2013-03-08 12:07:06全部人员表叫ppp 里面是 id name全部任务表叫rrr 里面是 id renwu(任务类别) 想要的结果是 某一个人 一年里,每个月 扫地几次,擦玻璃几次,做饭,几次输出结果:小王的 2013全年 月份 扫地 擦玻璃 做饭 201301 10 5 0201302 21 0 6201303 0 11 3mysqlsql求sql
1 小王 扫地 清扫了好 2013-04-04 12:07:06
2 小王 擦玻璃 擦不干净 2013-05-05 12:07:06
3 小李 做饭 做不好 2013-03-08 12:07:06全部人员表叫ppp 里面是 id name
全部任务表叫rrr 里面是 id renwu(任务类别)
想要的结果是 某一个人 一年里,每个月 扫地几次,擦玻璃几次,做饭,几次
输出结果:小王的 2013全年 月份 扫地 擦玻璃 做饭
201301 10 5 0
201302 21 0 6
201303 0 11 3
DATE_FORMAT(atime,'%Y%m') as `月份`,
sum(if(renwulb='扫地',1,0)) as `扫地`,
sum(if(renwulb='擦玻璃',1,0)) as `擦玻璃`,
sum(if(renwulb='做饭',1,0)) as `做饭`
from eee
group by name
MySQL交叉表
在某些数据库中有交叉表,但在MySQL中却没有这个功能,但网上看到有不少朋友想找出一个解决方法,特发贴集思广义。http://topic.csdn.net/u/20090530/23/0b782674-4b0b-4cf5-bc1a-e8914aaee5ab.html?96198现整理解法如下:数据样本: create table tx( id int primary key, c1 c...
from (
select
if(renwulb=1,1,0) as a,
if(renwulb=2,1,0) as b,
if(renwulb=3,1,0) as c,
name,atime
from dd
)x
GROUP BY name,left(atime,7);版主写的好像有问题! 我测试了下版主写的不能按月来的! 只是按名称来.即便是 group by上renwulb 还是不行的! 不正确的. 敬请版主斧正!
DATE_FORMAT(atime,'%Y%m') as `月份`,
sum(if(renwulb='扫地',1,0)) as `扫地`,
sum(if(renwulb='擦玻璃',1,0)) as `擦玻璃`,
sum(if(renwulb='做饭',1,0)) as `做饭`
from eee
group by name,DATE_FORMAT(atime,'%Y%m')