【发布时间】:2016-09-30 23:54:02
【问题描述】:
我试图找到一种方法来获得最新的Inspection_date 中的Occupancy 和最后一个之前的不相等的结果。
在此示例中,只有数字 RoomID 2 将是唯一的结果,因为:Occupancy for OrderID 201 = 'Vacant' 到 Occupancy for OrderID 202 = 'Occupied'。
我有查询的开头,但似乎找不到结束查询的好逻辑。
| RoomID | OrderID | Occupancy | rn |
+--------+---------+-----------+----+
| 01 | 101 | Vacant | 1 |
| 01 | 102 | Vacant | 2 |
| 01 | 103 | Occupied | 3 |
| 01 | 104 | Vacant | 4 |
| 02 | 201 | Vacant | 1 |
| 02 | 202 | Occupied | 2 |
| 02 | 203 | Vacant | 3 |
| 03 | 301 | Occupied | 1 |
| 03 | 302 | Occupied | 2 |
| 03 | 303 | Occupied | 3 |
| 03 | 304 | Occupied | 4 |
| 04 | 401 | Occupied | 1 |
| 04 | 402 | Occupied | 2 |
| 04 | 403 | Vacant | 3 |
| 04 | 404 | Occupied | 4 |
SELECT i.room_number, order_number, Occupancy , row_number() OVER(PARTITION BY room_number ORDER BY Inspection_date DESC) rn
FROM #inspection_data i
【问题讨论】:
标签: sql sql-server tsql where