sql - 从多行中获取一行

标签 sql postgresql

我有这样的数据

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;

检查一下:http://sqlfiddle.com/#!17/562f6b/4

关于sql - 从多行中获取一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59188342/

相关文章:

sql - 如何使用 Redshift 预测 future 日期

sql - 在 Grails 中,您可以在同一方法中同时使用 sql.newInstance 和 Domain 类调用吗?

sql - 为什么我的 Entity Framework 将 '2.87' 变成了 '2'(十进制字段)?

java - 在运行时从 db enum 为 jpa enum 生成值

没有结果集的Java准备语句?

arrays - Postgres 将 Text 数组转换为 Int 数组

mysql - 计算两列类别的总和

sql - VIEW中的ORDER BY返回不同的结果SQL

sql - 一起使用 sqldf 和 RPostgreSQL

postgresql - 对 2 个 DB 执行连接