首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >复自连接

复自连接
EN

Stack Overflow用户
提问于 2016-10-23 15:39:17
回答 1查看 77关注 0票数 0

视图有问题,我正在使用Server。我有一张这样的桌子:

代码语言:javascript
运行
复制
+-------+------+
| Start | End  |
+-------+------+
|     1 | Null |
|     3 | 4    |
|     6 | 9    |
+-------+------+

这个表表示一系列的时间框架,如果End is Null --这意味着它还没有完成,但是可能会有短时间间隔(3-4和6-9),我想创建一个视图来显示如下所有的时间框架:

代码语言:javascript
运行
复制
+-------+------+
| Start | End  |
+-------+------+
|     1 | 3    |
|     3 | 4    |
|     4 | 6    |
|     6 | 9    |
|     9 | Null |
+-------+------+

我找不到解决办法。我试了一个多小时却没有结果。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-23 15:44:16

我想你想要union alllead()

代码语言:javascript
运行
复制
select start, lead(start) over (order by start)
from ((select t.start as start from likethis t
      ) union all
      (select t.end from likethis t
      )
     ) t
where start is not null
order by start;

在Server的早期版本中,可以使用cross apply

代码语言:javascript
运行
复制
with t as (
      select t.start as start from likethis t
      union all
      select t.end from likethis t
     )
select t.start, tnext.start 
from t cross apply
     (select top 1 t2.*
      from t t2
      where t2.start > t.start
      order by t2.start desc
     ) tnext
order by start;
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40204690

复制
相关文章

相似问题

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