我有这样的数据表
id typeid date
12 exited 01-06-2017
1 approved 05-06-2017
7 attended 08-06-2017
9 admitted 10-06-2017
45 approved 12-06-2017
67 admitted 16-06-2017
我想要的答案将是这样的:
difference(days)
5
4
我想计算已批准和允许之间的日期差异(无论它们在哪里,所以我认为我们必须使用循环语句)。我想在MySql(版本:5.6)中编写一个存储过程,该存储过程以任何形式(可能是具有这些结果的表)返回结果。
这实际上是窗口函数非常适合的一种问题,但是由于您使用的是5.6版,因此这是不可能的。这是执行此操作的一种方法:
SELECT
DATEDIFF(
(SELECT t2.date FROM yourTable t2
WHERE t2.typeid = 'admitted' AND t2.date > t1.date
ORDER BY t2.date LIMIT 1),
t1.date) AS difference
FROM yourTable t1
WHERE
typeid = 'approved'
ORDER BY
date;
上述查询的逻辑是,我们仅限制批准类型的记录。对于每个这样的记录,我们使用相关的子查询,然后向前搜索并寻找时间,并找到允许类型的