我在mysql查询方面不是很好。这就是为什么要再问这个问题了。
我们正在使用 Mysql 数据库,我们有单个表 employee_transaction 。
employee_transaction表
id | employee_id | date | transaction_type
------------------------------------------------------
1 | 1 | 2015-01-01 | 1
2 | 1 | 2015-12-31 | 0
3 | 1 | 2015-07-01 | 1
4 | 2 | 2014-02-01 | 1
5 | 1 | 2016-04-01 | 1
6 | 2 | 2014-11-30 | 0
7 | 1 | 2016-08-01 | 1
8 | 1 | 2016-10-31 | 0
等等。
要获得正确的结果,需要满足以下条件: -
两个连续的transaction_type的结果如下 结果是一个员工
如果两个Transaction_type = 1。那么start_date =第一个交易日期, end_date =第二个交易日期-1和transaction_type = 1.
如果第一个Transaction_type = 1且下一个transaction_type = 0。那么 start_date =第一个交易日期,end_date =第二个交易日期 和transaction_type = 1。
如果第一个Transaction_type = 0且下一个transaction_type = 1。那么 start_date =第一个交易日期+ 1,end_date =第二个交易 date-1和transaction_type = 0。
如果在transaction_type = 0之后找不到任何交易。那么 start_date =第一个交易日期+ 1,end_date = Null和 TRANSACTION_TYPE = 0。
我们需要查询来自 employee_transaction 表的以下输出。
employee_id | start_date | end_date | transaction_type
------------------------------------------------------
1 | 2015-01-01 | 2015-06-30 | 1
1 | 2015-07-01 | 2015-12-31 | 1
1 | 2016-01-01 | 2016-03-31 | 0
1 | 2016-04-01 | 2016-07-31 | 1
1 | 2016-08-01 | 2016-10-31 | 1
1 | 2016-11-01 | (Null) | 0
2 | 2014-02-01 | 2014-11-30 | 1
提前致谢。
如果您有任何疑虑/需要澄清,请回复我。