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 回答