3

我只是想知道如何计算特定设备的数量..

SELECT 
    EQUIPMENTS.DESCRIPTION AS [EQUIPMENT TYPE], 
    Count(EQUIPMENTS.EQNAME) AS QUANTITY,
    (SELECT Count(EQUIPMENTS.CONDITION) FROM EQUIPMENTS WHERE EQUIPMENTS.CONDITION = 'Functional') AS WORKING,
    (SELECT Count(EQUIPMENTS.CONDITION) FROM EQUIPMENTS WHERE EQUIPMENTS.CONDITION = 'Non-Functional') AS [NON-WORKING]
FROM EQUIPMENTS
GROUP BY EQUIPMENTS.DESCRIPTION;

此查询返回以下内容:

EQUIPMENT NAME : PROJECTOR
QUANTITY : 3
WORKING : 2
NON-WORKING :1

现在,如果我添加另一个具有不同类型的设备,例如计算器,它将具有相同的 WORKING 和 NON-WORKING 计数,仅适用于 PROJECTOR。我该如何让它也计算计算器的数量以及工作和非工作本身的数量?我的意思是每当我添加另一个具有特定描述的设备时,查询也会独立计算它吗?

我正在使用 VB.NET,这个查询是在 MS ACCESS 2007 中进行的。

4

1 回答 1

1

条件满足时使用IIf()表达式返回 1,不满足时返回 0。然后Sum是那些价值观。

SELECT 
    e.DESCRIPTION AS [EQUIPMENT TYPE], 
    Count(e.EQNAME) AS QUANTITY,
    Sum(IIf(e.CONDITION = 'Functional', 1, 0)) AS WORKING,
    Sum(IIf(e.CONDITION = 'Non-Functional', 1, 0)) AS [NON-WORKING]
FROM EQUIPMENTS AS e
GROUP BY e.DESCRIPTION;
于 2013-01-03T07:33:45.033 回答