sql - 从多行中获取一行
问题描述
我有类似的数据
tableid name status uuid date
1 a none 1 2019-12-02
1 a none 2 2019-12-02
1 a done 4 2019-12-02
2 b none 6 2019-12-02
2 b done 7 2019-12-02
3 c none 8 2019-12-02
如果一个表有多行,我想选择该表中状态已完成的行。如果任何表没有像“完成”这样的状态想要返回“无”。
tableid name status uuid date
1 a done 4 2019-12-02
2 b done 7 2019-12-02
3 c none 8 2019-12-02
解决方案
SELECT
*
FROM
(
SELECT
ROW_NUMBER() OVER (PARTITION BY tableid ORDER BY status ASC) as RN,
tableid,
name,
status,
uuid,
date
FROM
SAMPLE
)T
WHERE T.RN =1;
推荐阅读
- java - 如何修复 IntelliJ 中的 NoClassDefFoundError: org.slf4j.LoggerFactory (但 Eclipse 工作正常)
- haskell - 为什么 quickCheck 会创建单位列表
- dart - 错误:名称“E”不是类型,因此不能用作类型参数,为什么以及如何创建泛型函数?
- java - JavaFX:右键单击 TableColumn 禁用调整大小
- php - 如何解决这个问题以及如何提高php编程水平
- c# - 如何订阅和传递子可观察集合的集合更改事件?
- python - 在 Keras 自定义层中获取批量大小并使用 tensorflow 操作 (tf.Variable)
- python-3.x - pandas read_csv 在大字符串上失败
- c++ - TableView:转到窗口末尾的新行
- c++ - Windows 类型不允许我的回调访问局部变量,有什么解决方法吗?