0

我需要根据缺勤情况创建报告,目前数据存储在具有以下结构的表中:

Date | Name1 | Name2 | Name3 | Name4 | Name5

每次员工离职时,他们的员工 ID 都会添加到他们离职日期旁边的列中。我正在努力寻找一种像样的方式来使用数据。

理想情况下,我想要实现的是反转数据的方式,以便员工 ID 具有他们休假的日期,而不是每个日期有 5 列如果有 5 人休假。例如:

EmpName | Date
JWC     | 22/03/2013
JWC     | 23/03/2013

以前从来没有做过类似的事情,所以有点迷茫。在这种情况下,支点会有所帮助吗?

4

2 回答 2

1

使用 UNPIVOT:

SELECT 
    empl
    , dt
FROM 
    ( 
        SELECT
            dt,
            id1,
            id2,
            id3
        FROM 
            data
) d
UNPIVOT
( 
    empl FOR epl IN ( id1, id2, id3 ) 
) u
ORDER BY 
    empl, 
    dt

请参阅SQL-Fiddle

于 2013-09-23T10:44:23.457 回答
0

试图使这个大规模复杂化,简单地做了几个工会来整理它们并将它们放入另一个表中。可能不是最好的分辨率,但效果很好。

于 2013-09-23T10:31:23.890 回答