0

我使用 SUM 和 CROSS JOIN 进行 MYSQL 查询,它工作正常。

MYSQL查询:

SELECT SUM(totexec/(pass_count+fail_count))/d.total  COUNT FROM test_schedule CROSS JOIN ( SELECT COUNT(*) total FROM test_schedule WHERE project='JupiterQA' ) d WHERE project='JupiterQA'

但我试图在 MSSQL 中执行相同的查询,显示“列 'd.total' 在选择列表中无效,因为它既不包含在聚合函数中,也不包含在 GROUP BY 子句中。”

之后,我在查询末尾添加了 GROUP BY a.total,错误是:除以零错误。

我在所有表中都有记录,查询错误吗?

4

2 回答 2

0

我不问你为什么使用交叉连接:D 只是在你的查询中添加一个 group by 子句

SELECT SUM(totexec(pass_count+fail_count))d.total  COUNT FROM test_schedule CROSS JOIN ( SELECT COUNT(*) total FROM test_schedule WHERE project='JupiterQA' ) d WHERE project='JupiterQA' GROUP BY d.total
于 2015-02-11T07:48:15.473 回答
0

这应该等同于 MYSQL 查询:

SELECT tSum / dTotal AS COUNT
FROM (
   SELECT SUM(totexec / (pass_count+fail_count)) AS tSum, d.total AS dTotal 
   FROM test_schedule 
   CROSS JOIN ( SELECT COUNT(*) total 
                FROM test_schedule 
                WHERE project='JupiterQA' ) d 
   WHERE project='JupiterQA' ) t

我认为没有必要CROSS JOIN。这也应该完成这项工作:

SELECT tSum / ( SELECT COUNT(*) 
                FROM test_schedule 
                WHERE project='JupiterQA' ) AS COUNT
FROM (
   SELECT SUM(totexec / (pass_count+fail_count)) AS tSum 
   FROM test_schedule 
   WHERE project='JupiterQA' ) t
于 2015-02-11T08:04:44.587 回答