Eu sei que há uma resposta simples para esta pergunta, mas simplesmente não consigo entender. Eu tenho uma tabela com colunas datetime e int.
| TimeStartTz | RowNumber | RateID |
|-------------------------|-----------|-------------|
| 2018-05-07 07:00:00.000 | 45 | 1 |
| 2018-04-09 07:00:00.000 | 43 | 1 |
| 2018-03-26 07:00:00.000 | 42 | 1 |
| 2018-03-19 07:00:00.000 | 41 | 1 | <-- want this row
| 2018-03-05 07:00:00.000 | 2 | 2 |
| 2018-02-26 07:00:00.000 | 1 | 2 |
| 2018-02-19 07:00:00.000 | 40 | 1 |
| 2018-02-12 07:00:00.000 | 39 | 1 |
| 2018-01-29 06:45:00.000 | 38 | 1 |
| 2018-01-22 06:45:00.000 | 37 | 1 |
Eu quero pegar a linha da mudança mais recente no RateID ou a primeira linha se não houver nenhuma mudança no conjunto, ou seja, no exemplo a linha com RowNumber
41. Tentei particionar por RateID mas obviamente não leva em conta seções contíguas :
ROW_NUMBER() OVER (PARTITION BY pq.[RateID] ORDER BY pq.[TimeStart]) RowNumber