2016-07-13 5 views
-2

erhalten Ich arbeite an einer Anwendung und ich blieb stecken; Ich muss auf eine Weise abfragen, dass ich Daten von der Zugangsdatenbank nach Jahr erhalten kann.Daten von Access-Datenbank gemäß Jahr

Bsp: Ich habe eine Zeile, wo Startdatum ist 1-09-2016 und Enddatum ist 2-6-2017. Ich mag die Monatszahl zwischen dem Startdatum und enddate Jahr weise

wie bekommen:

9,10,11,12 für 2016

und 1,2 ...., 6 für 2017

Gibt es eine Möglichkeit, das zu tun?

Ich benutze Pivot-Tabelle, um Month-Nummer zu bekommen, aber es zeigt falsche Ergebnisse, da es nur Jan bis Dezember Felder enthält.

, wenn das Datum im nächsten Jahr ist, dann wird es zu falschen Ergebnissen
ex zeigt: Für 22 Datum November 2016 zu 2. Februar 2017 erwartete Ergebnis ist
11 (für November)
12 (für Dezember) für das Jahr 2016
und 1,2 für 2017

hier ist meine Abfrage

VERÄNDERN iif (IsNull (COUNT (monthTable.monthNumber)), "N/A", FIRST (Resource_Allocation. [Beladbarkeit]))
SELECT Resource_Allocation. [Employee ID], Resource_Allocation. [Aktuelles Roll-On Datum], Resource_Allocation. [Geschätztes Roll-Off Datum]
VON Resource_Allocation, monthTable
WHERE monthTable.monthNumber Zwischen Monat ([Resource_Allocation]! [Actual Roll-On Date]) und Monat ([Resource_Allocation]! [Geschätztes Roll-Off-Datum])
GROUP BY Resource_Allocation [Mitarbeiter-ID], Resource_Allocation [Tatsächliches Roll-On-Datum], Resource_Allocation [Geschätztes Roll-Off-Datum ]
PIVOT monthTable.monthName IN (Januar, Februar, März, April, Mai, Juni, Juli, August, September, Oktober, November, Dezember);

+0

Sie müssen nur eine Nummer auf Monate zwischen zwei Terminen? Ist es Sql Abfrage? – Whencesoever

+0

Nein, ich brauche Monatszahl nicht zählen von Monaten :) – altamash

+0

wie 01 für Jan 06 für Juni 07 für Juli und so weiter. – altamash

Antwort

0

Hier ist beispielsweise, wie es auf Beispieldaten zu tun:

DECLARE @Start DATETIME, 
     @End DATETIME; 

SELECT @Start = '2016-09-01'   
    ,@End = '2017-06-02'; 


SELECT MONTH(DATEADD(MONTH, a.number, @Start)) as MonthNumber 
FROM master.dbo.spt_values a 
WHERE a.type = 'P'   
AND  a.number <= DATEDIFF(MONTH, @Start, @End); 

mehr Daten über aktuelle Tabelle/Spaltennamen angeben, wenn Sie mit, dass mehr Hilfe benötigen.

+0

Frage ist über ms-Zugriff. – NEER

+0

ja, es geht auch um .net, sql, – Whencesoever

0

Wenn Sie dies in MS Access lösen möchten, hier ist ein schneller und dreckiger Ansatz. Erstellen Sie eine Tabelle tblMonth mit zwei Spalten, YearNr und MonthNr (numerisch). Geben Sie alle erforderlichen Daten ein (2016 1, 2016 2 usw.). Als nächstes führen Sie diese Abfrage (Abfrage wird Sie bitten, ein Startdatum eingeben und endDate der Datums ist):

PARAMETERS StartDate date, EndDate Date; 
SELECT tblMonth.YearNr, tblMonth.MonthNr 
FROM tblMonth 
WHERE YearNr & Format(MonthNr, '00')>= Year(StartDate) & Format(Month(StartDate),'00') 
AND YearNr & Format(MonthNr,'00') <= Year(EndDate) & Format(Month(EndDate),'00') 
Verwandte Themen