用于计数的mysql case语句

时间:2016-02-07 02:39:53

标签: mysql case

表t1

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.14.0/jquery.validate.min.js"></script>

<form id="projectForm">
  <div class="project-details">
    <h2>Project details</h2>
    <label>Project name: </label>
    <input type="text" class="reg-project-name" size="40" value="" name="projectName">
    <br>
    <button type="button" class="reg-next-button">Next</button>
  </div>
  <div class="project-address">
    <h2>Project address</h2>
    <label>Project address:</label><input type="text" class="reg-project-address" size="40" value="" name="projectAddress">
    <br>
    <button class="reg-next-button">Next</button>
  </div>
</form>

表t2

col1 col2 col3
---- ---- ----
  1   cat   2
  2   dog   3
  3   cat   4
  4   dog   5

我想把它变成这样:

 id  type
---- ----
  1    a
  2    a
  3    b
  4    b

查询

col2   a    b
---- ---- ----
 cat   2    4
 dog   3    5

仅填充a或b列

我的查询有什么问题?

1 个答案:

答案 0 :(得分:1)

您需要将case语句移动到count()(或sum())本身:

Select t1.col2, 
       count(case when t2.type = 'a' then 1 else null end) as a,
       count(case when t2.type = 'b' then 1 else null end) as b 
From mytable t1 join mytable2 t2 on t1.col1=t2.id where t1.col3 is not null 
group by 1;