这样的问题能不能用一条sql搞定 表结构是这样的uid 姓名 上班日期我想列出的是姓名 1月 2月 。12月 每月上班的天数,没有就用零表示还请sql高手指点一二,谢过先。(我用的是员工id,所以重名的不用考虑) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 没有太好的理解 楼主的字段是uid对应是员工id还是姓名这个字段用id代替的不知道日期格式是什么格式 是 ‘2013-10-06’ 还是‘20131006’具体对表数据也不是很了解建议创建临时表增加字段 ‘所属月份’ 可以是varchar型然后update tmptable set ‘所属月份’= left(‘上班日期’,从左边数到第几位截取)(可以自己查看那一下left函数)然后直接使用 group by 姓名 ,所属月份 就可以得到想要的数据不知道是不是正确理解楼主的意思了 如果楼主是做 程序 而不是单纯 用sql语句进行一次统计建议 楼主 更改一下表结构,这样子查询语句也更加便捷,迅速希望对楼主有帮助 http://blog.csdn.net/acmain_chm/article/details/4283943MySQL交叉表在某些数据库中有交叉表,但在MySQL中却没有这个功能,但网上看到有不少朋友想找出一个解决方法,特发贴集思广义。http://topic.csdn.net/u/20090530/23/0b782674-4b0b-4cf5-bc1a-e8914aaee5ab.html?96198现整理解法如下:数据样本: create table tx( id int primary key, c1 c... 可以不用管uid的,我的任务就是要做一个统计,日期格式随便,问题是能不能用一条复杂的sql做出来 在不用考虑效率的情况下可以这样查,不过格式与你期望的有一定出入:SELECT `name`, SUBSTR(time, 1, 7) as date, count(*) as sum FROM jobs GROUP BY `name`, date纵表转横标一直是个难题... 5楼的高手应该有些接近了,这个输出是几列?还有,如果本月没上班的话显示为null,不是0吧 怎么可能呢!按照姓名和日期分组,数据里面假如没有1月份的数据,那么查询出来的是不具有1月份的 表示的即 本月没上班 什么也没显示这种方法和上面我所说的没有差别上面主要是考虑,如果你写的是程序调用带函数的 sql语句 而且是全部查询可能效率地下点,所以建议增加字段,如果不采用增加字段,那么sql语句即5楼朋友所写的那样但是还是没有带着 你要求的那样子 本月没上班 显示为0能问一下楼主是用什么语言在写应用,还是什么吗! 确实ACMAIN_CHM 大大的那个帖子是很好的帮助赞一个 救命:SELEct 姓名,sum(if(month(上班日期)=1,1,0))as 1月,sum(if(month(上班日期)=2,1,0))as 2月,...sum(if(month(上班日期)=12,1,0))as 12月 from tt group by 姓名 主从数据库同步失败:have equal MySQL server UUIDs mysql 建表 关联外键时 error 1005 2个SQL合并查询出结果 简单问题 删除记录 【散分---高手接】如何通过SSL启动mysql 重复记录问题,请指教! 关于Mysql事务问题。。。 如何获得查询的记录数?mysql 高分!!如何启动两个mysql服务 求mysql初级教程 mysql如何查找时间超过10分钟的记录? 请问我这个查询语句哪里错了?
是uid对应是员工id
还是姓名这个字段用id代替的不知道日期格式是什么格式 是 ‘2013-10-06’ 还是‘20131006’
具体对表数据也不是很了解建议创建临时表增加字段 ‘所属月份’ 可以是varchar型
然后update tmptable set ‘所属月份’= left(‘上班日期’,从左边数到第几位截取)(可以自己查看那一下left函数)
然后直接使用 group by 姓名 ,所属月份 就可以得到想要的数据不知道是不是正确理解楼主的意思了
建议 楼主 更改一下表结构,这样子查询语句也更加便捷,迅速
希望对楼主有帮助
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...
还有,如果本月没上班的话显示为null,不是0吧
即 本月没上班 什么也没显示
这种方法和上面我所说的没有差别
上面主要是考虑,如果你写的是程序调用带函数的 sql语句 而且是全部查询可能效率地下点,所以建议增加字段,如果不采用增加字段,那么sql语句即5楼朋友所写的那样
但是还是没有带着 你要求的那样子 本月没上班 显示为0能问一下楼主是用什么语言在写应用,还是什么吗!
ACMAIN_CHM 大大的那个帖子是很好的帮助
赞一个
SELEct 姓名,sum(if(month(上班日期)=1,1,0))
as 1月,
sum(if(month(上班日期)=2,1,0))
as 2月,
...
sum(if(month(上班日期)=12,1,0))
as 12月 from tt group by 姓名