首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sql数据转换

Sql数据转换
EN

Stack Overflow用户
提问于 2017-04-04 13:13:22
回答 1查看 31关注 0票数 1

这是我的源表

代码语言:javascript
复制
Reference   ModifiedDate             Teachers   Students SchoolID    ETC
-------------------------------------------------------------------------
1023175     2017-03-03 16:02:01.723     10       25        5
1023175     2017-03-07 07:59:49.283     15       50        15
1023175     2017-03-12 11:14:40.230     25       6         5
1023176     2017-03-04 16:02:01.723     11       35        8
1023176     2017-03-08 07:59:49.283     16       60        25
1023177     2017-03-15 11:14:40.230     15       7         2

我需要下面的输出

代码语言:javascript
复制
Reference   StartDate                 EndDate  
---------------------------------------------
1023175   2017-03-03 16:02:01.723     2017-03-07 07:59:49.283
1023175   2017-03-07 07:59:49.283     2017-03-12 11:14:40.230
1023175   2017-03-12 11:14:40.230     9999-12-31 00:00:00.000 
1023176   2017-03-04 16:02:01.723     2017-03-08 07:59:49.283
1023176   2017-03-08 07:59:49.283     9999-12-31 00:00:00.000 
1023177   2017-03-15 11:14:40.230     9999-12-31 00:00:00.000 (last record should have this value)

师范生SchoolID

代码语言:javascript
复制
 10       25        5
 15       50        15
 25       6         5
 11       35        8
 16       60        25
 15       7         2

所有其他栏目,如教师,学生和SchoolId等,也必须在输出与每一个记录。

对于如何做到这一点,有什么建议吗?使用Server 2008

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-04 13:18:07

使用外部适用()

代码语言:javascript
复制
select 
    Reference
  , StartDate = t.ModifiedDate
  , EndDate = coalesce(x.ModifiedDate, convert(datetime,'9999-12-31 00:00:00.000'))
  , Teachers
  , Students
  , SchoolID
from t
  outer apply (
    select top 1 i.ModifiedDate
    from t as i
    where i.Reference = t.Reference
      and i.ModifiedDate > t.ModifiedDate
    order by i.ModifiedDate asc
    ) x

rextester演示:http://rextester.com/RFTD32624

返回:

代码语言:javascript
复制
+-----------+-------------------------+-------------------------+----------+----------+----------+
| Reference |        StartDate        |         EndDate         | Teachers | Students | SchoolID |
+-----------+-------------------------+-------------------------+----------+----------+----------+
|   1023175 | 2017-03-03 16:02:01.723 | 2017-03-07 07:59:49.283 |       10 |       25 |        5 |
|   1023175 | 2017-03-07 07:59:49.283 | 2017-03-12 11:14:40.230 |       15 |       50 |       15 |
|   1023175 | 2017-03-12 11:14:40.230 | 9999-12-31 00:00:00.000 |       25 |        6 |        5 |
|   1023176 | 2017-03-04 16:02:01.723 | 2017-03-08 07:59:49.283 |       11 |       35 |        8 |
|   1023176 | 2017-03-08 07:59:49.283 | 9999-12-31 00:00:00.000 |       16 |       60 |       25 |
|   1023177 | 2017-03-15 11:14:40.230 | 9999-12-31 00:00:00.000 |       15 |        7 |        2 |
+-----------+-------------------------+-------------------------+----------+----------+----------+

参考资料:

  • - msdn
  • The的应用运算符Rob Farley的威力
  • 应用:切片!它掉下来了!一切都是这样!-布拉德·舒尔兹
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43208303

复制
相关文章

相似问题

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