2016-05-09 4 views
1

Es gibt zwei Hauptfelder Startdatum und Enddatum in Vertragstabelle Ich möchte Ergebnis als zusätzliche Spalte namens Beschreibung geben, um den Monat zwischen Vertragsbeginn und -ende darzustellen. siehe unten Tabelle und das Ergebnis, das ich benötigeMYSQL Auswahl Abfrage Rückkehrliste von Monaten als Zeichenfolge zwischen Anfangs-/Enddatum

 
Table : Contracts 
------------------------------ 
ID | START  | END  | 
------------------------------ 
1 | 2016-05-01 | 2016-07-31 | 
2 | 2016-04-01 | 2016-08-31 | 
3 | 2016-01-22 | 2016-02-25 | 
------------------------------ 

Here I führen muß wie pro unten Format, ein zusätzliches Feld, das Bereichs-/Liste der Monate zwischen Startdatum repräsentieren und enddate Vertrag mit SELECT-Abfrage.

 
Result (as per give format) 
---------------------------------------------------------------------------------------- 
ID | START  | END  | Description  
---------------------------------------------------------------------------------------- 
1 | 2016-05-01 | 2016-07-31 | May-2016, Jun-2016, July-2016 
2 | 2016-04-01 | 2016-07-31 | April-2016, May-2016, Jun-2016, July-2016 
3 | 2016-01-22 | 2016-02-25 | January-2016, February-2016 
---------------------------------------------------------------------------------------- 

Beispiel erste Reihe der obigen Tabelle ist startdate 2016.05.01 (2016-May-01) und Enddatum ist 2016.07.31 (2016-Juli-31) so hier gibt es Liste der Monate und das Jahr zwischen dem 01. Mai und dem 31. Juli. Die Beschreibung wird von Mai 2016 bis Juni 2016, Juli 2016 sein.

Ich versuchte viele Abfragen immer noch nicht ich bekomme die genaue SQL-Abfrage.

Sie wissen nicht, wie genau das zu tun und das gleiche Ergebnis

Anregungen bitte

Vielen Dank im Voraus

+0

Sie möchten vielleicht einen [Kalender Tabelle] zu prüfen, zu schaffen (http://stackoverflow.com/ Fragen/14105018/Generieren einer Serie von Daten). Der Grund dafür ist, dass einige der Monatswerte in Ihrer 'Description'-Spalte nicht in Ihrer Originaltabelle vorhanden sind. –

+0

Kann ich eine zusätzliche Tabelle namens Kalendertabelle erstellen oder handelt es sich um eine temporäre Tabelle? –

+0

Dies hängt davon ab, ob Sie diese Art von Abfrage häufig durchführen möchten. –

Antwort

1

Die unten Abfrage erhalten sollte es tun.

Ihre Daten in Ein- und Ausgang für 2. Reihe unterschiedlich sind, ich habe es für die Ausgangsdaten laufen

select id, DATE_FORMAT(start_Date, '%Y-%c-%d') as Start_Date, 
     DATE_FORMAT(end_date,'%Y-%c-%d') as END_Date, 
     group_concat(distinct(DATE_FORMAT(aDate, '%Y %M '))) as Descp 
from (
    select ss.end_date - interval (a.a) month as aDate from 
    (select 0 as a union all select 1 union all select 2 union all select 3 
    union all select 4 union all select 5 union all select 6 union all 
    select 7 union all select 8 union all select 9) a, Contracts ss 
    ) mon, Contracts sa 
where aDate between sa.start_date and sa.end_date 
group by id; 
+0

Dank KP, Fast habe ich das Ergebnis von abovr Ihre Abfrage –

+0

über Abfrage geben Sie mir zufällige Ergebnis dh 2016 März, 2016 Januar, 2016 Februar, aber ich brauche ** 2016 Januar, 2016 Februar, 2016 März ** –

Verwandte Themen