我有两个SQL SELECT COUNT语句:
SELECT COUNT(*) FROM table1 t1
INNER JOIN table2 t2 ON t2.id = t1.rowid
WHERE t1.flag1 = false AND t2.flag2 = true;
SELECT COUNT(*) FROM table1 t1
INNER JOIN table2 t2 ON t2.id = t1.rowid
WHERE t1.flag1 = true AND t2.flag2 = false;
可以看出,这两个语句的唯一区别是翻转条件。
但我想做的是将这两个语句组合成一个,这样输出就变成一个表和两列,第一列包含第一条语句的结果,第二列包含第二条语句的结果。类似于:
count1 | count 2
-------------------------
3456 | 9864
顺便说一下,我用的是PostgreSQL。有人能告诉我怎么做吗?
非常感谢
最佳答案
这应该对你有用。我对PostgreSql不太熟悉,但我认为它会有用的。
SELECT
SUM(CASE WHEN t1.Flag1 = false AND t2.flag2 = true THEN 1 ELSE 0 END) Count1,
SUM(CASE WHEN t1.Flag1 = true AND t2.flag2 = false THEN 1 ELSE 0 END) Count2
FROM
table1 t1
INNER JOIN table2 t2 ON t2.id = t1.rowid
关于sql - 将两个SQL select合并为一个,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14686007/