In letzter Zeit ist ein interessantes SQL-Problem aufgetreten, das ich ohne mehrere Schritte in der Vergangenheit nicht lösen konnte.Abfrage, um die Anzahl der Elemente mit einem bestimmten Status innerhalb eines bestimmten Zeitraums zu ermitteln
Angenommen, Sie haben eine einfache "ItemStatus" -Tabelle, in der Sie den Status verschiedener Elemente verfolgen können. Spalten sind "itemId", "Datumsstatus geändert" und "Status". Beispiel:
ItemId DateStatusChanged Status
1 09/01/2016 New
1 10/15/2016 Complete
2 10/20/2016 New
2 10/25/2016 Complete
Es wird davon ausgegangen, dass ein Artikel denselben Status hat, bis er geändert wird. Also war der Punkt 1 "Neu", beginnend am 9/1, und blieb bis zum 15.10. "Neu", als er zu "Fertig" geändert wurde. Punkt 2 war "Neu" von 10/20 bis 10/25.
Also sagen Sie, dass Sie die Tabelle abfragen möchten, um eine Zählung zu erhalten, wie viele einzigartige Gegenstände den Status "Neu" jederzeit im Oktober 2016 hatten (was in diesem Fall "2" wäre). Gibt es eine einzige SQL-Abfrage, die dieses Ergebnis zurückgeben kann?
Ah, ja, perfekt - das ist nach dem Vorbild dessen, was ich in pseudo-SQL denken aber übersetzen konnte nicht ganz. Ich wusste, dass eine "Platzhalter" -Variable für den Datumsstatus benötigt werden würde, wo Status = 'Neu' ist, da man nach dem * Vorhandensein von Nicht-'Neu'-Statusänderungssätzen für den betreffenden Artikel prüfen will * dieses Datum aber vor dem 1. Oktober. Vielen Dank! – Cmaso
Ich glaube, dass die letzte Zeile ein Tippfehler war - wenn diese Abfrage ausgeführt wird, wird eine Zählung von 1 zurückgegeben.Um eine Zählung von 2 zu erhalten (was korrekt ist - beide Elemente waren zu irgendeinem Zeitpunkt im Oktober 2016 "neu"), sollte die letzte Zeile der Abfrage "und is2.datestatuschanged <'2016-10-01'" lauten. – Cmaso
Ayup. Behoben. –