CTE答案...
WITH
step1 AS
(
SELECT
SUM(value1) AS interimValue1
SUM(CASE value2 > 0 THEN 1 ELSE 0 END) AS interimValue2,
<other fields>
FROM
<a query>
)
SELECT
interimValue/CASE interimValue2 = 0 THEN 1 ELSE interimValue2 END
FROM
step1
子查詢的版本...
SELECT
interimValue/CASE interimValue2 = 0 THEN 1 ELSE interimValue2 END
FROM
(
SELECT
SUM(value1) AS interimValue1
SUM(CASE value2 > 0 THEN 1 ELSE 0 END) AS interimValue2,
<other fields>
FROM
<a query>
)
AS step1
或者更具體到您發佈的SQL,但不對一般情況的回答...
SUM(value1)/COALESCE(SUM(CASE WHEN value2 > 0 THEN 1 ELSE NULL END), 1)
(返回,你返回0允許聚結,用ls替換空值NULL)
什麼味道的SQL?你可以使用CommonTableExpressons嗎? – MatBailie 2012-01-04 15:08:00
'WHEN'似乎不見了。 – 2012-01-04 15:25:05