Wir verwenden Mysql-Datenbank und wir haben Single-Tabellen, die employee_transaction ist.Wählen Sie Einzelfeld in zwei Spalte (Mysql)
employee_transaction Tisch
id | employee_id | date | transaction_type
------------------------------------------------------
1 | 1 | 2015-01-01 | 1
2 | 1 | 2015-07-01 | 1
3 | 1 | 2015-12-31 | 0
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
Und so weiter.
Um das richtige Ergebnis zu erhalten, müssen die folgenden Bedingungen erfüllt werden: - Jeder Mitarbeiter kann nicht konsekutiv TRANSACTION_TYPE hat = 0
- Erste TRANSACTION_TYPE jeden Mitarbeiter immer 1.
- ist.
das Ergebnis von zwei aufeinanderfolgenden TRANSACTION_TYPE sind below.These Ergebnisse für einen Mitarbeiter ist
- Wenn beide TRANSACTION_TYPE = 1. Dann start_date = erstes Transaktionsdatum, end_date = zweites Transaktionsdatum-1 und transaction_type = 1.
- Wenn der erste Transaction_type = 1 und der nächste transaction_type = 0 ist. Dann start_date = erstes Transaktionsdatum, end_date = zweites Transaktionsdatum und transaction_type = 1.
- Wenn der erste Transaction_type = 0 und der nächste transaction_type = 1 ist. Dann start_date = erstes Transaktionsdatum + 1, end_date = zweite Transaktion date-1 und transaction_type = 0.
- Wenn nach transaction_type = 0 keine Transaktion gefunden wird. Dann start_date = erstes Transaktionsdatum + 1, end_date = Null und transaction_type = 0.
Wir brauchen die Abfrage von der employee_transaction Tabelle folgende Ausgabe.
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
Vielen Dank im Voraus.
Wenn Sie irgendwelche Bedenken/Klärung benötigt, setzen Sie mich zurück.
ich die inkompatible Datenbank-Tags entfernt. Bitte markieren Sie die Datenbank, die Sie wirklich verwenden.Auch mit den Daten, die Sie 'order by employee_id, start_date 'bereitgestellt haben, funktioniert'. Die Begründung der Regeln ist ein wenig unklar. Was bedeuten die Transaktionen? –
Hallo @GordonLinoff, ich habe alle Details in der Frage aktualisiert. Danke für den Hinweis. –
Verweisen Sie auf: https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-very-simple- sql-query/333953 # 333953 – Santosh