sql - 根据几个标准选择最后一条记录
问题描述
前
+--------+--------+---------+-------+------+
| RowNum | Status | Remarks | SetNo | |
+--------+--------+---------+-------+------+
| 1 | Q | | Set 1 | Want |
| 2 | Q | | Set 1 | Want |
| 3 | Q | | Set 1 | Want |
| 4 | Q | | Set 1 | Want |
| 5 | W | | Set 1 | Want |
| 1 | W | abc | Set 2 | |
| 2 | W | abc | Set 2 | |
| 3 | W | abc | Set 2 | |
| 4 | W | abc | Set 2 | Want |
| 1 | Q | | Set 3 | Want |
| 2 | w | abc | Set 3 | |
| 3 | w | abc | Set 3 | Want |
+--------+--------+---------+-------+------+
如何根据 Rownum=lastnumber 和 setno 选择 Status=Q 和 Status=W?预期结果是“想要”的行是我需要的。那些空的,将被删除
试过:
select *
from mytable
where (RowNum != (select max(RowNum) from mytable) and status = 'W')
解决方案
我知道对于每个setno
,您都需要所有“Q”和最新的“W”。如果是这样,您可以使用这样的窗口函数:
select *
from (
select t.*,
row_number() over(partition by setno, status order by rownum desc) rn
from mytable t
) t
where rn = 1 or status = 'Q'
推荐阅读
- dart - 如何在 Dart 中通过`this`获取当前类实例并分配给最终属性
- c# - 运行时不应用 EF 种子
- angularjs - 在 Angular 2 组件中解析访问数据
- dart - Flutter 中的 OverlayEntry 导致的 Navigator.push() 断言
- mysql - wp插入帖子无限循环
- javascript - 使用 Javascript 从预先建立的颜色数组为 CSS 分配颜色
- geolocation - 如何检测坐标集之间的路径偏差
- vb.net - 根据某个范围获取特定的列表项
- java - 设置 onItemClick 将 ListView 项目数据传递给片段
- wordpress - Wordpress 插件:如何在 post_publish(draft-to-publish 等)事件上获取帖子标签?