如何从一个具有不同where子句的表中获得两次sum()?

loc*_*ock 4 sql

SELECT 
    sum(qty) as accept,
    (SELECT sum(qty) 
     FROM pile 
     WHERE pf=false) as reject 
FROM pile 
WHERE pf=true;
Run Code Online (Sandbox Code Playgroud)

这是我目前使用的SQL,但我猜它不是最佳实践?我之前使用的另一种选择是, SELECT sum(qty) FROM pile GROUP BY pf但我需要它们作为列而不是行.

还有其他解决方案吗?

bea*_*ach 8

单通过表.

SELECT 
    sum(CASE WHEN pf = TRUE THEN qty ELSE 0 END) as accept,
    sum(CASE WHEN pf = FALSE THEN qty ELSE 0 END) as reject
FROM pile;
Run Code Online (Sandbox Code Playgroud)