你需要重写你的查询,子查询和将它们连接在一起:
SELECT CAST(na.NewAccounts AS FLOAT)/aa.AllAccounts
FROM ( SELECT Count(NewAccounts) AS NewAccounts, Town
FROM (SELECT Stuff)
WHERE (Newaccounts)
GROUP BY Town
) na
INNER JOIN
( SELECT Count(AllAccounts) AS AllAccounts, Town
FROM (SELECT DifferentSTUFF)
WHERE (AllAccounts)
GROUP BY Town
) aa
ON aa.Town = na.Town;
注:我从两个查询中删除DISTINCT
,因为它是多余的。浮动在NewAccounts
上的转换是为了避免将结果整数除法隐式转换回整数。
您可能需要更改此略有不同数据的每个查询,即可用性,如果你不会总是有一个镇的新帐户,将更好的写法如下结果:
SELECT CAST(COALESCE(na.NewAccounts, 0) AS FLOAT)/aa.AllAccounts
FROM
( SELECT Count(AllAccounts) AS AllAccounts, Town
FROM (SELECT DifferentSTUFF)
WHERE (AllAccounts)
GROUP BY Town
) aa
LEFT JOIN
( SELECT Count(NewAccounts) AS NewAccounts, Town
FROM (SELECT Stuff)
WHERE (Newaccounts)
GROUP BY Town
) na
ON aa.Town = na.Town
这工作完美。谢谢。我没有内在的联合征服他们。 – ColorfulWind
如何将小数减少到两个地方? (我试图用decimal替换Float并且转换为cast) – ColorfulWind
只需要输出完整结果以及分母或分子:CAST(CAST(COALESCE(na.NewAccounts,0)AS FLOAT)/ aa.AllAccounts AS DECIMAL(10,2))' – GarethD