mysql SQL:是否可以根据在当前行之前连接的行来限制连接条件?

vsikbqxv  于 2023-08-02  发布在  Mysql
关注(0)|答案(1)|浏览(83)

我想把这个表连接到自己上,以便把最早的借用日期和15天内发生的最近的归还日期联系起来......有人能知道怎么做吗?我想不出一个创造性的连接条件...?递归?
选择trans_number,type,date,Borrow_accurate,return_accurate FROM borrow_data;
| 类型,类型|日期,日期|借_发生|返回发生| return_occur |
| --|--|--|--| ------------ |
| 借款|14/9/14 5:58|一个|空值| NULL |
| 借款|14/10/14 5:58|二个|空值| NULL |
| 借款|14/12/14 5:58|三个|空值| NULL |
| 返回|14/10/14 9:58|空值|一个| 1 |
| 返回|14/13/14 9:58|空值|二个| 2 |
| 借款|14/13/14 5:21|四个|空值| NULL |
| 借款|2014年3月24日17:33|五|空值| NULL |
| 返回|2014年3月27日13:27|空值|三个| 3 |
| 返回|2014年3月30日12:31|空值|四个| 4 |
| 借款|2014年4月5日13:31|六|空值| NULL |
| 返回|2014年4月31日7:31|空值|五| 5 |
以下是所需的输出:

SELECT
r.type AS type_return,    
r.return_occur,    
r.date AS return_date,    
b.type AS type_borrow,    
b.borrow_occur,    
b.date AS borrow_date,    
Date_diff(r.date,b.date) AS date_diff   
FROM borrow_data r
LEFT JOIN borrow_data b ...

字符串
请注意,在第3行中,borrow_occurance #3是如何被跳过的,b/c它发生在返回前15天……
并且在行5中,其空B/C在前15天内没有购买。
提前致谢
| (row类型返回|返回发生|返回日期|类型借用|借用发生|借用日期|日期差| date_diff |
| --|--|--|--|--|--|--| ------------ |
| (1)返回|一个|14/10/14 9:58|借款|一个|14/9/14 5:58|一个| 1 |
| (2)返回|二个|14/13/14 9:58|借款|二个|14/10/14 5:58|三个| 3 |
| (3)返回|三个|2014年3月27日13:27|借款| * 4 *| 14/13/14 5:21|十四岁| 14 |
| (4)返回|四个|2014年3月30日12:31|借款|五|2014年3月24日17:33|六| 6 |
| (5)返回|五|2014年4月31日7:31|空值| * 空 *| 空值|空值| NULL |

cbeh67ev

cbeh67ev1#

我提出了这个查询(它是针对PostgreSQL的,但我希望你能理解):

SELECT *, EXTRACT(DAY FROM t1.date-t2.date) AS date_diff FROM test AS t1
LEFT JOIN test AS t2 ON t2.borrow_occur = t1.return_occur AND EXTRACT(DAY FROM t1.date-t2.date) <= 15
WHERE t1.type='RETURNED'
ORDER BY t1.return_occur

字符串
这是我使用的数据表:


的数据
它产生输出:



只有在过去15天内有借用条目时才加入。我不检查分钟等只有几天。你必须按你喜欢的方式微调它。如果我误解了任何要求,请告诉我。

相关问题