【问题标题】:SQL stuck with data structure in a tableSQL 卡在表中的数据结构中
【发布时间】:2013-09-23 10:04:26
【问题描述】:

我需要创建一个基于缺勤的报告,目前数据存储在具有以下结构的表中:

Date | Name1 | Name2 | Name3 | Name4 | Name5

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

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

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

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

【问题讨论】:

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


    【解决方案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

    【讨论】:

      【解决方案2】:

      试图使这变得过于复杂,simple 做了几个联合来整理它们并将它们放入不同的表中。可能不是最好的分辨率,但效果很好。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-08
        • 1970-01-01
        • 1970-01-01
        • 2014-05-25
        相关资源
        最近更新 更多