2016-05-13 3 views
-2

Ich habe eine SQL Server-Tabelle, die Datenspeicher in diesem Format haben, möchte ich Daten von März 2014 bis Februar 2015 extrahieren, wie kann ich dies erreichen, bitte?Wie Abfrage einer SQL Server-Tabelle mit Monaten Bereich

ID Months Years fd1 fd2 fd3 fd4 
------------------------------------------- 
1 january 2014 1 2 3 8 
2 february 2014 2 2 2 5 
3 march  2014 2 5 3 5 
4 april  2014 3 4 2 2 
5 may  2014 4 1 3 2 
6 june  2014 1 1 2 2 
7 july  2014 2 3 3 4 
8 august  2014 5 6 2 5 
9 september 2014 12 2 5 6 
10 october 2014 11 1 5 3 
11 november 2014 1 5 5 7 
12 december 2014 3 8 5 8 
13 january 2015 4 1 8 1 
14 february 2015 5 9 8 4 
15 march  2015 6 2 2 5 
16 april  2015 6 5 20 2 
17 may  2015 6 2 2 2 
18 june  2015 9 5 2 2  
19 july  2015 10 6 2 2  
20 august  2015 12 3 2 5 
21 september 2015 55 2 2 2 
22 october 2015 1 1 2 5 
23 november 2015 3 5 5 2 
24 december 2015 2 5 5 5 
+2

wird dies durch die Fundamentaldaten des 'where',' und' und 'or' SQL-Klauseln ... sehr einfach zu erlernen und TRY –

+0

Umfrage beantwortet, füllen Sie bitte: ich die Abfrage versucht haben .. .. aber ich sah das Problem .... Während meiner Recherche habe ich herausgefunden, dass ..., aber ich habe ein Problem, das Wissen vollständig zu verstehen oder anzuwenden. Bitte leiten Sie mich in die richtige Richtung. Bisher weiß ich, dass die Lösung mit ... oder mit ... oder die mit ... bei mir nicht funktioniert, weil .... – Pred

+1

Sie sollten niemals Daten mit Namen des Monats + Jahres speichern. Sie sollten ein Datumsfeld mit dem Datum als ersten des Monats haben. –

Antwort

0
SELECT * 
FROM YourTableName 
WHERE (MONTH(Months+ ' 1 2014') IN (1,2) AND Years = 2015) OR (MONTH(Months+ ' 1 2014') > 2 AND Years = 2014) 
+0

danke Jenson und Kunal, Jenson Ich möchte, dass du weißt, dass ich meine Herausforderungen in diesem Forum gepostet habe, bevor ich es selbst versucht habe. Kunal Sie haben Monate habe ich den Monatsbereich, den ich suche, weil SQL 2008 R2 gibt Fehler "Die Monat-Funktion erfordert 1 Argument (e)" Was kann ich tun? – Abraham1973

+0

Sorry für einen Tippfehler, weil ich vom Telefon tippte. Bitteschön. Die Antwort wurde korrigiert –

0

Zuerst sollten Sie Years und Months Spalten zu einem DATE Feld (hier als Dates genannt) umwandeln.

Dann vergleichen Sie das gewünschte Datum auf Dates Spalte.

WITH cte(ID, Months, Years, fd1, fd2, fd3, fd4, Dates) 
AS 
(
    SELECT ID, Months, Years, fd1, fd2, fd3, fd4, CAST(CAST(Years AS NVARCHAR) + ' ' + CAST(Months AS NVARCHAR) AS DATE) 
    FROM tblYearMonth 
) 

SELECT * 
FROM cte 
WHERE Dates >= '2014 March' AND Dates <= '2015 February' 
ORDER BY Dates