Ich habe eine Auswahlabfrage Bericht wie dieserDynamische SQL-Datum Realisie- rung für Spalten und Bestellung
EmpID Title M1 M2 M3 M4 M5 M6 M7 M8 M9 M10 M11 M12
1 PM
2 BA
3 QA
EmpID
und Title
aus dem Emp
Tisch kommen und alle M1
-M12
kommen aus Code
Tabelle
M1
ist immer Januar, M2
ist immer Februar ... M12
immer Dezember usw.
Wenn ich diese Abfrage auf 1 2017 Mai ausführen, werde ich
EmpID Title 2016-05-1 2016-06-1 2016-07-1 2016-08-1 2016-09-1 2016-010-1 2016-11-1 2016-12-1 2017-01-1 2017-02-1 2017-03-1 2017-04-1
1 PM
2 BA
3 QA
Das heißt,
EmpID Title M5 M6 M7 M8 M9 M10 M11 M12 M1 M2 M3 M4
1 PM
2 BA
3 QA
Wenn ich diese Abfrage am 1. Juni ausführen 2017 erhalten haben, werde ich bekommen müssen
EmpID Title 2016-06-1 2016-07-1 2016-08-1 2016-09-1 2016-010-1 2016-11-1 2016-12-1 2017-01-1 2017-02-1 2017-03-1 2017-04-1 2017-05-1
1 PM
2 BA
3 QA
Das bedeutet:
EmpID Title M6 M7 M8 M9 M10 M11 M12 M1 M2 M3 M4 M5
1 PM
2 BA
3 QA
Ich habe eine temporäre Tabelle erstellt und fallen alle erforderlichen Monat in diesem
Select *
Into #TempDates
From
(Select
MyDate = convert(date, DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) - 1, 0))
union all----Current month-1
Select x2 = convert(date, DATEADD(MONTH, DATEDIFF(MONTH, 1, GETDATE()) - 2, 0))
union all----Current month-2
Select x3 = convert(date, DATEADD(MONTH, DATEDIFF(MONTH, 2, GETDATE()) - 3, 0))
union all--Current month-3
Select x4 = convert(date, DATEADD(MONTH, DATEDIFF(MONTH, 2, GETDATE()) - 4, 0))
union all--Current month-4
select x5=convert(date,DATEADD(MONTH, DATEDIFF(MONTH, 2, GETDATE())-5, 0)) union all--Current month-5
select x6=convert(date,DATEADD(MONTH, DATEDIFF(MONTH, 2, GETDATE())-6, 0)) union all--Current month-6
select x7=convert(date,DATEADD(MONTH, DATEDIFF(MONTH, 2, GETDATE())-7, 0)) union all--Current month-7
select x8=convert(date,DATEADD(MONTH, DATEDIFF(MONTH, 2, GETDATE())-8, 0)) union all--Current month-8
select x9=convert(date,DATEADD(MONTH, DATEDIFF(MONTH, 2, GETDATE())-9, 0)) union all--Current month-9
select x10=convert(date,DATEADD(MONTH, DATEDIFF(MONTH, 2, GETDATE())-10, 0)) union all--Current month-10
select x11=convert(date,DATEADD(MONTH, DATEDIFF(MONTH, 2, GETDATE())-11, 0)) union all--Current month-11
select x12=convert(date,DATEADD(MONTH, DATEDIFF(MONTH, 2, GETDATE())-12, 0))--Current month-12
) AS X
ich einen Bericht wie folgt gesucht:
Select
Emp.EmpID as 'Employee ID',
Emp.Title as 'Employee Title',
Code.M1 as (Select Mydate from #TempDates where datepart(month, Mydate) = 1),
Code.M2 as (Select Mydate from #TempDates where datepart(month, Mydate) = 2),
Code.M3 as (Select Mydate from #TempDates where datepart(month, Mydate) = 3)
.
.
.
Code.M12 as (Select Mydate from #TempDates where datepart(month, Mydate) = 12)
From
Emp
Join
Code on Emp.ID = Code.ID
Order by
Mydate asc
Könnte jemand bitte helfen Sie mir dies zu tun? Ich weiß nicht, wie man das Datum mit Spaltennamen aliasiert. Ich bin mit SQL Server 2014
Vielen Dank Zeit nehmen, meine Frage und vielen Dank für Ihre Hilfe
Vielen Dank McNets für Ihre großartige Hilfe. Ich werde es versuchen und dich wissen lassen – Please