为返回的每个值显示不同的计数作为单独的列

时间:2016-04-29 14:44:14

标签: mysql many-to-many inner-join

表1(包含订单源类型信息)

id | name
---------
 0 | App
 1 | Web

表2(包含订单信息)

order_id | date_ordered | source_id 
   0     |   24/04/2016 |    0
   1     |   24/04/2016 |    1
   2     |   23/04/2016 |    0
   3     |   23/04/2016 |    1
   4     |   23/04/2016 |    0
   5     |   22/04/2016 |    1
   6     |   22/04/2016 |    0

我想在给定日期显示每个来源的订单数量

Date       | Source Count 0 | Source Count 1
24/04/2016 |       1        |       1
23/04/2016 |       2        |       1
22/04/2016 |       1        |       1

我现在提出的查询:

SELECT
    date_ordered,
    count(distinct),
FROM `event`
 INNER JOIN `Table1`
    ON `id` = `Table2`.`source_id`
 GROUP BY date_ordered
ORDER BY date_ordered desc

我花了很多时间试图弄清楚,并且无法想出更好的东西。问题是源的数量是动态的。

1 个答案:

答案 0 :(得分:0)

您可以使用案例和分组

 select date_ordered, 
 case when source_id = 0 then sum(source_id)
 END as  'Source Count 0',    
 case when source_id = 1 then sum(source_id)
 END as  'Source Count 1'
 group by date_ordered