Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL选择行_Sql_Sql Server_Sql Server 2005 - Fatal编程技术网

SQL选择行

SQL选择行,sql,sql-server,sql-server-2005,Sql,Sql Server,Sql Server 2005,可能重复: 如果我有下表 id time start 08.00 AM stop 09.00 AM stop 09.30 AM start 09.30 AM start 11.00 AM start 11.30 AM stop 11.30 AM stop 12.00 PM 我希望输出看起来像下面的输出: 有解决办法吗 这就是我想要的输

可能重复:

如果我有下表

   id         time
   start      08.00 AM 
   stop       09.00 AM
   stop       09.30 AM
   start      09.30 AM
   start      11.00 AM
   start      11.30 AM
   stop       11.30 AM
   stop       12.00 PM
我希望输出看起来像下面的输出:

有解决办法吗

这就是我想要的输出方式:

    id         time       end_time    interval 
   start      08.00 AM    09.00 AM      60 minute
   stop       09.00 AM    09.30 AM      30 minute
   start      09.30 AM    11.30 AM      120 minute
   stop       11.30 AM    12.00 PM      30 minute
   stop       12.00 PM     NULL          NULL
我希望输出只采取每次第一次启动和每次启动后 车站和最近一站

使用“行数”窗口函数可以轻松实现这一点:

; with  numbered as
        (
        select  row_number() over (order by [time]) rn
        ,       count(*) over() as cnt
        ,       *
        from    Table1
        )
select  *
from    numbered cur
left join
        numbered prev
on      cur.rn = prev.rn + 1
left join
        numbered next
on      cur.rn = next.rn - 1
where   cur.rn in (1, cur.cnt) -- first or last row
        or (cur.id = 'start' and prev.id = 'stop') -- start after stop
order by
        cur.rn

并不是说您的示例输出不满足您的需求。它包括多个不符合以下三个条件的行:第一行、最后一行、停止后开始。

名称id和值为start/stop的列?时间是什么类型的?没有帮到你吗?@Tim Schmelter,时间是时间/日期类型,看起来像,但有了topI上的输出,我将投票以与我相同的理由重新开放。在OP决定他们想要不同格式的输出之前,前一个已经收集了几个答案。编辑上一个问题将基本上没有当时发布的答案。很抱歉我的错误,请再次查看我的帖子