使用此查询
select FROM_UNIXTIME(updates.up_day, '%Y-%m-%d') date
,employees.em_name from updates
join employees on updates.up_employeeid=employees.em_id
join options on updates.up_optionid=options.op_id
where employees.em_team_id=12 and
year(curdate()) = year(FROM_UNIXTIME(updates.up_day)) and
MONTH(FROM_UNIXTIME(updates.up_day))= MONTH(CURDATE()) and
options.op_name not in ("OFF","Holiday") ;
查询已编辑
获得这样的结果
| 2016-12-19 | Ravi
| 2016-12-18 | Ravi
| 2016-12-25 | Ravi
| 2016-12-26 | Ravi
| 2016-12-27 | Ravi
| 2016-12-02 | Amith
| 2016-12-03 | Amith
| 2016-12-09 | Amith
| 2016-12-19 | Amith
| 2016-12-18 | Amith
但我们想要像
这样的结果2 | Ravi
3 | Ravi
2 | Amith
2 | Amith
请就此提出建议。
答案 0 :(得分:0)
您可以使用如下查询:
SELECT mydate, myname,
@seq := IF(@name = myname && DATEDIFF(mydate, @date) = 1, @seq + 1, 1),
@name := myname,
@date := mydate
FROM mytable
CROSS JOIN (SELECT @date := '1900-01-01', @name := '', @seq := 0) AS vars
ORDER BY myname, mydate
mytable
是您的查询,用作子查询。查询使用变量来计算连续记录的等级。如果两个连续记录共享相同的名称值并且恰好有一天作为差异,则等级增加1。
注意:您应该使用嵌套条件,以便为@name
和@date
变量赋值。为了简单起见,我把这篇文章从我的查询中删除了。