在一列中打印两行[高级SQL]

时间:2012-02-20 09:57:44

标签: sql database sql-server-2005

美好的一天,

我被困在这里,我迫切需要帮助...

显然,我正在尝试将两行合并为一列。

我目前的sql dan表设计是:

select * from timetable order by name, id

给了我这个:

Here

有谁知道如何设计我的查询,以便我得到这样的结果:

Here

Fyi,我正在使用Microsoft SQL Server 2005.

先谢谢你们! :)

很抱歉,我无法在此处上传图片。

抱歉......我发布了相同的图片!!对不起!!

我上传了新的..请看看..

1 个答案:

答案 0 :(得分:1)

SELECT  COALESCE(i.Name, o.Name) [Name],
        i.Time [TimeIN],
        MIN(o.Time) [TimeOUT]
FROM    (   SELECT  *
            FROM    Timetable
            WHERE   Status = 'IN'
        ) i
        FULL OUTER JOIN 
        (   SELECT  *
            FROM    Timetable
            WHERE   Status = 'OUT'
        ) o
            ON o.Name = i.Name
            AND o.Time > i.Time
GROUP BY COALESCE(i.Name, o.Name), i.Time 
ORDER BY Name, TimeIN