首页 > 解决方案 > 从多行中获取一行

问题描述

我有类似的数据

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

标签: sqlpostgresql

解决方案


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


推荐阅读