SQL坚持使用表中的数据结构

时间:2013-09-23 10:04:26

标签: sql-server-2008 tsql pivot-table

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

Date | Name1 | Name2 | Name3 | Name4 | Name5

每次员工离职时,员工ID都会被添加到他们离开日期旁边的一列中。我正在努力找出使用数据的正确方法。

理想情况下,我希望实现的是扭转数据的方式,以便员工ID具有关闭的日期,如果5个人关闭,则每个日期不会有5列。例如:

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

从来没有做过与此类似的事情,所以有点迷失。在这种情况下,枢轴会有帮助吗?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

试图大规模复杂化,简单地做了几个工会来整理它们并把它们放到不同的表格中。可能不是最佳分辨率,但效果很好。