Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Uzyskaj następne minimum, większe lub równe danej wartości dla każdej grupy

Tabela pochodna a pobiera minimalne wartości z tabeli 1 podane refid i intVal z tabeli2; zewnętrzne zapytanie pobiera tylko jakąś wartość.

select a.refid, a.intVal, a.nextGt, table1.SomeVal
from
(
    select table2.refid, table2.intval, min (table1.intVal) nextGt
      from table2
      left join table1
        on table2.refid = table1.refid
       and table2.intVal <= table1.intVal
     group by table2.refid, table2.intval
) a
-- table1 is joined again to retrieve SomeVal 
left join table1
  on a.refid = table1.refid
 and a.nextGt = table1.intVal

Oto Sql Fiddle z testem na żywo .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dziwne zachowanie TSQL z COALESCE podczas korzystania z Order By

  2. SQL Server 2008 Backup Compression Standard Edition

  3. Sterownik JTDS nie działa dla Sql Server 2008R2 i nie załadowano biblioteki Denali Native SSPI. Sprawdź właściwość systemową java.library.path

  4. Pomoc dotycząca wyzwalania serwera sql - ta sama aktualizacja tabeli

  5. Kreator modelu danych jednostki jest zbyt wolny (baza danych SQL)