我試圖設置查詢來提取員工任期報告。我有每個員工的跟蹤信息的員工狀態表(例如-Hire日期,期限日期,工資變動等)的表看起來像這樣:SQL查找行中的數據對並將其轉換爲列
EmployeeID | Date | Event
1 | 1/1/99 | 1
2 | 1/2/99 | 1
1 | 1/3/99 | 2
1 | 1/4/99 | 1
我用透視表,從移動臺垂直佈局水平佈局
SELECT [FK_EmployeeID], MAX([1]) AS [Hire Date], ISNULL(MAX([2]), DATEADD(d, 1, GETDATE())) AS [Term Date]
FROM DT_EmployeeStatusEvents PIVOT (MAX([Date]) FOR [EventType] IN ([1], [2])) T
GROUP BY [FK_EmployeeID]
我得到的結果是這樣的:
EmployeeID | 1 | 2
1 | 1/4/99 | 1/3/99
2 | 1/2/99 | *null*
不過,我碰到的問題是,我需要兩套值的每一位員工。 (我們聘請了很多重複seasonals的),我想是的列轉換爲行選擇僱用日期(1)的方式,並在第二天項日期(2)爲每一個員工是這樣的:
EmployeeID | 1 | 2
1 | 1/1/99 | 1/3/99
2 | 1/2/99 | *null*
1 | 1/4/99 | *null*
這可能嗎?我看了很多PIVOT的例子,它們都顯示了一個聚合函數。
難道只是比那些2個事件或更多? –
還有更多的活動,但我只需要1(聘用日期)和2(學期日期)事件。我們的一些季節已經被僱傭了多個賽季。例如,在2011年,2012年和2013年春季,夏季和秋季僱用了一名IF人員,將有3對數據。 (例如-3個僱用日期和3個相關的學期日期。) – gwhenning