如何解决sqlite 计入列
我收到了 2 个查询,2 个计数。但是,当我编写语句 count()、count() 时,两列的计数都相同。你能帮我吗?
这是我的两个单独的查询
SELECT
x.ROWa,x.ROWb,COUNT(*) ResultA
FROM
tableA x
LEFT JOIN
tableB AS y ON SUBSTR(x.ROWb,4,1) = y.ROWz
WHERE
x.ROWc IN (5,6)
AND (SUBSTR(x.ROWb,1) = "6" OR SUBSTR(x.ROWb,1) = "9")
AND Workflow = "VALUEone"
AND Shorthistory = "False"
GROUP BY
1
ORDER BY
3 DESC,2,1 ASC
SELECT
x.ROWa,COUNT(*) ResultB
FROM
tableA x
LEFT JOIN
tableB AS y ON SUBSTR(x.ROWb,1) = "9")
AND Status = "successfull"
GROUP BY
1
ORDER BY
3 DESC,1 ASC
我得到的是:
ROWa|ROWb|ResultA|ResultB
-------------------------
aaa |123 |78 |78
bbb |456 |30 |30
但它应该给出实际结果:
ROWa|ROWb|ResultA|ResultB
-------------------------
aaa |123 |78 |250
bbb |456 |30 |74
我尝试了什么:
SELECT
x.ROWa,COUNT((SELECT x.ROWb
FROM tableA x
LEFT JOIN tableB AS y ON SUBSTR(x.ROWb,1) = y.ROWz
WHERE x.ROWc IN (5,6)
AND (SUBSTR(x.ROWb,1) = "9")
AND Workflow = "VALUEone"
AND Shorthistory = "False"
GROUP BY 1)) ResultA,1) = "9")
AND Status = "successfull"
GROUP BY 1)) ResultB
GROUP BY
1
ORDER BY
3 DESC,1 ASC
解决方法
如果使用条件聚合,您可以将 2 个查询合并为 1 个:
SELECT x.ROWa,x.ROWb,COUNT(CASE WHEN Workflow = 'VALUEone' AND Shorthistory = 'False' THEN 1 END) ResultA,COUNT(CASE WHEN Status = 'successfull' THEN 1 END) ResultB
FROM tableA x LEFT JOIN tableB y
ON SUBSTR(x.ROWb,4,1) = y.ROWz
WHERE x.ROWc in (5,6) AND SUBSTR(x.ROWb,1) IN ('6','9')
GROUP BY x.ROWa
或者:
SELECT x.ROWa,SUM(Workflow = 'VALUEone' AND Shorthistory = 'False') ResultA,SUM(Status = 'successfull') ResultB
FROM tableA x LEFT JOIN tableB y
ON SUBSTR(x.ROWb,'9')
GROUP BY x.ROWa
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。