Ich habe eine Tabelle namens theTable
von wo ich einige Daten importieren möchten. theTable
enthält Product stock Werte, und ich bin nur daran interessiert, die Aktienbestände am letzten Tag eines jeden Monats in einem Bereich von 6 Monaten zu finden.SQL Server: WHERE-Klausel, um nur Werte aus einem Bereich des letzten Tages von Monaten
Ich habe eine Spalte namens DateKey
, die aussieht wie yyyymmdd
und beschreibt das Datum, für das ein Bestandsbestand aufgezeichnet wird.
Als Beispiel würde Ich mag die stockValue
an den DateKey
Werte ableiten können: 20160131,20160331
Dafür habe ich versucht:
CREATE TABLE #theTable
(
DateKey INT,
stockValue INT
);
INSERT INTO #theTable
VALUES (20160131, 4), (20160130, 5),
(20160312, 5), (20160331, 4);
SELECT DateKey, stockValue
FROM #theTable
WHERE DateKey BETWEEN CONVERT(VARCHAR(8), DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) - 16, 0), 112)
AND CONVERT(VARCHAR(8), DATEADD(MONTH, DATEDIFF(MONTH, -1, GETDATE()) - 13, -1), 112)
(wo ich das hinzugefügte konvertieren() Spielereien, um Fehler zu vermeiden DateKey nicht vom Typ seiner DateTime
)
Aber das (natürlich) zurück:
012.351.DateKey stockValue
20160131 4
20160130 5
20160312 5
20160331 4
wie kann ich diese SQL-Anweisung anpassen enthalten nur:
DateKey stockValue
20160131 4
20160331 4
heißt in den letzten Tagen des Monats über den Bereich meiner angegebenen Datum?
EDIT:
Die Frage ist, ob es einen Weg gibt nur den letzten Tag der Werte zu erhalten, ohne zu hart Code mit einer WHERE DateKey IN ('20160131', '20160228', '20160331') da es viele verschiedene Werte geben würde, aus denen ich wählen würde, die eine hart codierte Lösung machen würden, die sehr fehler- und zeitintensiv wird.
Warum ist 'datekey' kein' date' Art in erster Linie? Da es scheint, dass Sie nur nach dem letzten Tag des Monats suchen, haben Sie die ['EOMONTH()'] (https://docs.microsoft.com/en-us/sql/t-sql/ Funktionen/eomonth-transact-sql) Funktion? – alroc
Mögliches Duplikat von [SQL Query, um den letzten Tag des Monats zu finden] (http://stackoverflow.com/questions/16646585/sql-query-to-find-the-last-day-of-the-month) –
Eine schnelle Google-Suche erzeugte Seiten mit Duplikaten. Haben Sie sich bemüht, das Problem selbst zu lösen? –