目前我没有权限对此进行测试,但未找到任何相关示例。 我想尝试这样的事情:
SELECT member.name, DISTINCT member.id,
COUNT(CASE WHEN member.code = 'A'
THEN 1) AS CountACode, ... CountBCode, COUNT(*) as CountTotal FROM member
我知道我可以这样做,但我还有其他一些我已经使用的列,这将更容易做到。但是我相信我被告知我错了,没有任何迹象表明原因。有人会介意告诉我问题在哪里吗?
答案 0 :(得分: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;
答案 1 :(得分:0)
您的问题是适用于整个结果集的DISTINCT
,而不仅仅是单个字段。
对于计数,正常模式是我们SUM
:
SUM(CASE WHEN Condition = value THEN 1 ELSE 0 END)
答案 2 :(得分: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