0

現時点ではこれをテストするためのアクセス権がありませんが、関連する例は見つかりませんでした. 私はこのようなことを試してみたい:

SELECT member.name, DISTINCT member.id, 
     COUNT(CASE WHEN member.code = 'A' 
     THEN 1) AS CountACode, ... CountBCode, COUNT(*) as CountTotal  FROM member

これを別の方法で行うことができることは理解していますが、すでに使用している他のいくつかの関連する列があり、これははるかに簡単に実行できます. しかし、理由を示すことなく、私は間違っていると言われたと思います。問題がどこにあるのか誰か教えてくれませんか?

4

3 に答える 3

0

DISTINCT間に句を書くことはできませんSELECT。句の直後にある必要があります。

CASE WHENはい、内部でステートメントを使用できますCOUNT

SELECT DISTINCT member.name,  member.id, 
       COUNT(CASE WHEN member.code = 'A' THEN 'something..' END) AS CountACode, 
       ... CountBCode, 
       COUNT(*) as CountTotal 
FROM member;
于 2012-08-01T13:30:44.050 に答える
0

あなたの問題は、DISTINCT単一のフィールドだけでなく、結果セット全体に適用される問題です。

カウントについては、これの通常のパターンは私たちにとってSUMです:

SUM(CASE WHEN Condition = value THEN 1 ELSE 0 END)
于 2012-08-01T13:30:51.937 に答える
0
SELECT member.name, member.id, SUM(CASE WHEN member.code = 'A' THEN 1 ELSE 0) AS CountACode, ... CountBCode, COUNT(*) as CountTotal
FROM member
GROUP BY member.name, member.id
于 2012-08-01T13:31:06.623 に答える