sql >> Database teknologi >  >> RDS >> Sqlserver

SQL SELECTING ROW

Det gøres nemt med row_number() vinduesfunktion:

; 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

Live eksempel på SQL Fiddle.

Ikke at dit eksempel output ikke opfylder dine krav. Den inkluderer flere rækker, der ikke matcher nogen af ​​de tre kriterier (første række, sidste række, start efter stop).




  1. Forklaring af JSONB introduceret af PostgreSQL

  2. Hvorfor er Oracle tabel/kolonne/indeksnavne begrænset til 30 tegn?

  3. Hvordan får man data fra databasen og ekko på php-siden?

  4. SQL Server Performance File IO-statistikker