我想结合两个查询
SELECT COUNT(*) FROM abc; SELECT COUNT(Status) FROM ABC WHERE Status='Active';
然后计算百分比(将第二个查询除以第一个查询)。我想在一个查询中实现这一目标。到目前为止我尝试过的是:
SELECT COUNT(*) AS A FROM abc UNION SELECT COUNT(Status) AS B FROM ABC WHERE Status='Active'; UNION SELECT(COUNT(Status)*100/SELECT COUNT(*) FROM abc)) AS %ofAB FROM abc WHERE Status='Active'
我得到的是:
A -- 31 36 86,11111111
我想要的是:
A | B | %ofAB --------------------- 36 | 31 | 86,1111111%
这应该给您您想要的:
SELECT COUNT(*) AS TotalCount, SUM(IIF(Status = 'Active', 1, 0)) AS ActiveCount, ROUND((SUM(IIF(Status = 'Active', 1, 0)) * 100/ COUNT(*)),2) AS PctActive FROM Abc
编辑:没注意到这是为Access。我不知道CASTAccess中是否可用,因此您可能需要使用一个等效函数来确保整数不会简单地产生1或0。Access可能会自动将除法转换为小数,但在SQL Server则不然。
CAST