So generieren Sie einen Datumsbereich in SQL Server

7

Der Titel erfasst nicht ganz, was ich meine, und dies kann ein Duplikat sein.

Hier ist die lange Version: Wie erstelle ich für jeden Gast, den sie als Gast aufgenommen haben, den Namen eines Gastes, sein Registrierungsdatum und das Datum seiner Abreise?

Beispiel: Bob checkt 7/14 ein und verlässt 7/17. Ich möchte

%Vor%

als mein Ergebnis.

Danke!

    
Daniel Cotter 21.06.2012, 15:25
quelle

5 Antworten

23

Ich würde argumentieren, dass die folgende Abfrage für diesen speziellen Zweck ungefähr so ​​effizient ist wie die Verwendung einer speziellen Nachschlagetabelle.

%Vor%

Ergebnisse:

%Vor%

Vermutlich wirst du das als Set brauchen, nicht für ein einzelnes Mitglied, also hier ist eine Möglichkeit, diese Technik anzupassen:

%Vor%

Ergebnisse:

%Vor%

Wie @Dems darauf hingewiesen hat, könnte dies folgendermaßen vereinfacht werden:

%Vor%     
Aaron Bertrand 21.06.2012, 15:35
quelle
6

Normalerweise mache ich das mit einem Trick mit row_number () in einer Tabelle. Also:

%Vor%

Die Berechnung für Seq geht ziemlich schnell, da keine Berechnung oder Reihenfolge erforderlich ist. Sie müssen jedoch sicher sein, dass die Tabelle für alle Zeiträume groß genug ist.

    
Gordon Linoff 21.06.2012 15:37
quelle
1

Wenn Sie eine "Tally" - oder "Numbers" -Tabelle haben, wird das Leben für solche Dinge wirklich einfach.

%Vor%

So erstellen Sie eine "Tally" -Tabelle.

%Vor%

Weitere Informationen darüber, was eine "Tally" -Tabelle in SQL ist und wie sie verwendet werden kann, um While-Schleifen und den "Hidden RBAR" reursiver CTEs, die zählen, zu ersetzen, finden Sie im folgenden Artikel.

Ссылка

    
Jeff Moden 25.06.2012 04:54
quelle
0

Das mag für dich funktionieren:

%Vor%     
smurtagh 21.06.2012 15:30
quelle
-4

Ich würde einen Trigger erstellen, um zusätzliche Datensätze zu erstellen und beim Auschecken auszuführen. Alternativ können Sie auch einen täglichen Mitternachtsjob machen (wenn Sie aktuelle Informationen in Ihrer Datenbank benötigen).

    
Andy 21.06.2012 15:31
quelle

Tags und Links