2015-02-11 4 views
0

У меня запрос MYSQL с SUM & CROSS JOIN, его рабочий тон.SUM(), CROSS JOIN Query

MYSQL QUERY:

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 в конце запроса, ОШИБКА: Разница по нулевой ошибке.

У меня есть записи во всей таблице, есть ли неправильный запрос?

+0

должен 'a.total' 'd.total в группе? – Jens

+0

У меня есть только псевдоним d, так что я использую d.total. Но a.total? – user3114967

+0

В вашем вопросе «GROUP BY a.total». – Jens

ответ

0

Я не спрашиваю, почему вы используете крест присоединиться: D просто добавить группу пункта в запросе

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 
+0

Я добавил GROUP BY d после этого только я получил ошибку.И упоминал выше сам вопрос. – user3114967

+0

хорошо, почему вы используете косые черты? mssql может интерпретировать это, чтобы делить на d.total –

+0

я делаю операцию деления, без косых черт, как можно выполнить операцию деления? – user3114967

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 
+0

его деление на нулевую ошибку, но у меня есть данные – user3114967

+0

@ user3114967 Либо 'pass_count + fail_count', либо' SELECT COUNT (*) total FROM test_schedule WHERE project = 'JupiterQA'' равно 0. –

+0

@ user3114967 Сделайте выбор на 'pass_count + fail_count' и 'SELECT COUNT (*) total ...' сначала, чтобы узнать, какие значения вы получите. –