Zwei temporäre Tabellen werden erstellt und dann geladen ... Hier ist das Schema.T-SQL Skript - logische Probleme mit Timeline
Create table #SH ([date] datetime,
sched_id int,
agent_id int)
Create table #SD (sched_id int,
start_minute int,
length int,
exception_code int)
(Schema und Design etwas, das ich leider nicht ändern kann, werden beide temporären Tabellen aus flachen Dateien geladen. Ich kann neue temporäre Tabellen vorstellen und laden Sie, wenn nötig).
Ein wenig Hintergrund - Die Header-Tabelle #SH enthält einen Personenplan als 'Start_minute' und geht nach 'schedule_length' in Minuten. Zum Beispiel, wenn Start Minute und Zeitplan Länge beide 480 waren, würde dies als 8 Uhr (8 Uhr = 480. Minute) und geht bis 4 Uhr (480 Minuten später, 4 Uhr = 960. Minute)
Die # SD-Tabelle enthält Ausnahmen zu den Header. Im obigen Beispiel hätte die Person wahrscheinlich eine Ausnahme für das Mittagessen, die start_minute = 720 und die Länge von 30 (12:00 - 12:30) wäre.
Datum und agent_id das einzige, was ich bin interessiert aus #sh, die Ausnahme Informationen in #sd ist das, was mich interessiert
Diese Abfrage funktioniert.
Select [date],#sd.start_minute,#sd.length,#sd.start_minute + #sd.length as 'end_minute',agent_id
from #SH
inner join #SD on #SD.sched_id = #sh.sched_id
* end_minute ist letztlich ein berechneter Wert von Start + Länge = Ende
Das gibt so etwas wie:
Date Start length end
1 2010-11-11 600 30 630
2 2010-11-11 630 40 670
3 2010-11-11 750 15 765
4 2010-11-11 800 40 840
Jetzt wünschte ich, ich könnte sagen, das war vorbei und weg ... aber es gibt Probleme mit der Dateneingabe. In Zeile 1 und 2 ist die Endzeit der Linie 1 Linien mit der Startzeit in Zeile 2 und kombiniert werden, sollte so aussehen meine Ergebnisse wie folgt aus:
Date Start length end
1 2010-11-11 600 70 670
2 2010-11-11 750 15 765
3 2010-11-11 800 40 840
Jede Idee ist, wie diese Logik zu bauen, damit ich die 3 Zeilen zurück statt 4? Ich arbeite gerade daran, die Tabelle auf # sd1.start + # sd1.length = # sd2.start für sich selbst zu verbinden.
Und noch komplizierter ... das obige Beispiel war 2 Zeilen, die kombiniert werden mussten. Ich bin auf einen Rekord gestoßen, der 30 Ein-Minuten-Einträge in Folge hatte, die ich zu einem einzigen Datensatz machen muss. Glücklicherweise können sie sich nicht überschneiden (Sie haben nicht 2 Datensätze in den gleichen Minuten), aber ich denke nicht, dass die Join-Anweisung, die ich oben betrachte, dafür geeignet ist.
Habe ein paar Änderungen an meiner eigenen Grammatik gemacht ... es gibt einige Spalten mehr in #SH, aber sie sind irrelevant. – Twelfth