TSQL Tabelle der Initialisierung der Variablen
Habe ich folgende TSQL table-variable:
declare @NumDaysMonth table
(
month_id smallint,
num_days smallint
)
Ich will einfach nur eine schnelle look-up für die Anzahl der Tage in jedem Monat. Wie kann ich die initialisieren Sie diese Tabelle, wie ein C-array:
int numDaysMonth[] = {31, 28, 30, ... , 31};
Natürlich ist dies alles andere als nur ein Beispiel, Sie wollen daran erinnern, dass der Februar hat 28 oder 29 Tage, je nachdem ob es ein Schaltjahr ist, richtig?
InformationsquelleAutor CodeKingPlusPlus | 2012-09-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gut Sie können nicht. Das beste, was Sie tun können, ist so etwas wie das
Dann abrufen könnte so etwas wie
SQL Fiddle Demo
"Sie können nicht gut" - ja, das können Sie. Siehe meine Antwort.
InformationsquelleAutor Conrad Frix
Im folgenden wird nicht auf die OP - Frage, die Initialisierung einer Tabelle. Sie sind herzlich eingeladen zu behandeln, als eine formatierte Kommentar.
Einen trick, der praktisch für die ungeraden lookup-Tabelle ist eine virtuelle Tabelle, auf die Fliegen:
Für das abrufen der Anzahl der Tage in einem Monat wäre ich mehr geneigt zu erstellen, eine Funktion, die Jahr und Monat aus und gibt den richtigen Wert. Wenn ich brauche eine schnelle, einmalige übersetzung von code in etwas lesbares der un-Tabelle ist bequem.
Wenn Sie brauchen, um zu finden Sie die faux-Tabelle ein paar mal in einem Ort:
Darüber hinaus, dass die lookup-Tabelle sollte wohl gehalten werden, wie eine Reale Tabelle oder Tabellenwertfunktion.
InformationsquelleAutor HABO
FYI, diese Art von array ist ein bisschen unvollständig, da es nicht ändern Sie mit den Schaltjahren? gibt es z.B. 29 Tage im Februar dieses Jahres.
Im folgenden erhalten Sie eine Liste, die ist 0-indiziert (wie C#) und ist für das laufende Jahr.
Wenn Sie es brauchen für jedes andere Jahr, setzen Sie das Jahr in der Y-Unterabfrage, z.B.
(select cast('19990101' as datetime))
InformationsquelleAutor RichardTheKiwi
Ist es einfach. Verwenden
identity
zu generieren, eine sich automatisch erhöhende Nummer.->
identity
können ausgesät werden, die mit einer anderen startnummer oder Inkrement, falls erforderlich.InformationsquelleAutor underscore_d
Können UDF statt und machen es einstellbar für jedes Jahr.
Verwendung:
Ausführung Zeit - bei 0 ms. 🙂
InformationsquelleAutor Alexander Melnichuk