2016-03-23 13 views
2

Ich habe eine Tabelle für ein Ticket-System, das die folgenden Spalten hat;Kombinieren doppelte Zeilen, um eine einzelne Zeile auszugeben

order<string> startDate<datetime> endDate<datetime> 

Die Mehrheit der Zeilen auf einer Säule ‚bestellen‘ aber in dem Szenario nicht dupliziert basiert, wo eine ‚Ordnung‘ von einem Tag geht zum nächsten es in 2 Aufträge aufgeteilt ist, hat die erste eine endDate von 17 Uhr (Ende des Tages) und der 2. hat ein Startdatum von 8 Uhr (Beginn des Tages). Die entsprechenden Start- und Enddaten sind nach Bedarf. Einige Bestellungen können> 2 Tage lang sein und werden daher in> 2 Zeilen aufgeteilt.

Beispiel

order startDate endDate 
1 2016-03-29 11:00:53.000 2016-03-29 17:00:53.000 
1 2016-03-30 08:00:53.000 2016-03-30 12:48:53.000 
2 2016-03-30 10:17:53.000 2016-03-30 13:08:53.000 

would transform to 
1 2016-03-29 11:00:53.000 2016-03-30 12:48:53.000 
2 2016-03-30 10:17:53.000 2016-03-30 13:08:53.000 

Ich brauche alle Zeilen zu kombinieren, mir einen Tisch mit einzigartiger ‚bestellt‘ ids mit Start- und Enden zu geben. d.h. eine Zeile mit dem niedrigsten Anfangsdatum ihrer Duplikate und dem höchsten Enddatum ihrer Duplikate.

Ich plane dies durch Erstellen einer neuen Tabelle und Auffüllen und kann 1 der doppelten Zeilen basierend auf einem bestimmten Wert auswählen, aber nicht sicher, wie eine neue Zeile basierend auf Werten aus mehreren Zeilen erstellt wird.

Antwort

5
SELECT order, MIN(startDate), MAX(endDate) 
FROM your_table_name 
GROUP BY order 

Es kann keine Notwendigkeit, eine neue Tabelle für diese zu schaffen - GROUP BY Abfragen sind extrem häufig bei Nutzung in der Produktion, und es gibt keinen inhärenten Schaden in einfach die Abfrage ausgeführt wird, die Ergebnisse zu erhalten, die Sie benötigen, wenn du brauchst sie.

+0

Thx VoteyDisiple. Ich verschiebe sie aus einem anderen Grund zu einem anderen Tisch - ich besitze das Übertragungsskript nur, um den Verbraucher an den richtigen Tisch zu leiten. Ich weiß, ich weiß, aber das kämpft für später;) – Fearghal

Verwandte Themen