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

ここで、電卓などの別のタイプの別の機器を追加すると、プロジェクター専用の動作中と非動作中の数が同じになります。電卓の数量と、稼働中および稼働していない自体の数もカウントするようにするにはどうすればよいですか? つまり、特定の説明を持つ別の機器を追加するたびに、クエリもそれを個別にカウントするということですか?

私は 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 に答える