首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL“转换”查询

SQL“转换”查询
EN

Stack Overflow用户
提问于 2010-01-27 00:49:00
回答 1查看 776关注 0票数 2

我将这些数据放在一个表中(使用SQL Server 2005):

代码语言:javascript
复制
ID    ParentID    StartTime    EndTime
77    62          08:00:00     11:00:00
78    62          12:00:00     15:00:00
79    62          18:00:00     22:00:00

我想把它变成这样:

代码语言:javascript
复制
ParentID  BreakfastStart  BreakfastEnd  LunchStart  LunchEnd  DinnerStart  DinnerEnd
62        08:00:00        11:00:00      12:00:00    15:00:00  18:00:00     22:00:00

现在最难的部分是:假设我没有其他数据字段来指定哪个记录是早餐、午餐或晚餐。我想将它们与最低开始时间相关联,即较低的开始时间将是早餐,下一个较低的开始时间将是午餐,较高的开始时间将是晚餐(假设所有三个(并且只有三个)记录总是被填满)。

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-01-27 00:52:37

代码语言:javascript
复制
WITH    q AS
        (
        SELECT  *, ROW_NUMBER() OVER (PARTITION BY parentID ORDER BY StartTime) AS rn
        FROM    mytable
        )
SELECT  qb.ParentID,
        qb.StartTime AS BreakfastStart, qb.EndTime AS BreakfastEnd,
        ql.StartTime AS LunchStart, ql.EndTime AS LunchEnd,
        qd.StartTime AS DinnerStart, qd.EndTime AS DinnerEnd
FROM    q qb
LEFT JOIN
        q ql
ON      ql.parentID = qb.parentID
        AND ql.rn = 2
LEFT JOIN
        q qd
ON      qd.parentID = qb.parentID
        AND qd.rn = 3
WHERE   qb.rn = 1
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2140958

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档