我有类似的数据

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/

10-15 20:46