我试图设置查询来提取员工任期报告。我有每个员工的跟踪信息的员工状态表(例如-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