日期拆分为 mysql 中的列

Date split in columns in mysql

我执行了一个事件table,其中我想根据日期分隔列

SELECT Event_ID,Name,count(Customer_Id) FROM UNLIMITED.Event_Execution a
join UNLIMITED.Event_Master b on a.Event_Id=b.ID
Where Event_Execution_Date_ID = '20211007'
group by Event_Id
order by Count(Customer_Id) desc;

期望的输出

Event_ID  Name    20211006  20211007
1         Offer1    1,218     6,876
2         Offer2   10,212     4,123

您需要条件聚合:

select 
  event_id,
  name,
  count(case when event_execution_date_id = '20211006' then customer_id end) as cnt_20211006,
  count(case when event_execution_date_id = '20211007' then customer_id end) as cnt_20211007
from unlimited.event_execution a
join unlimited.event_master b on a.event_id = b.id
where event_execution_date_id in ('20211006', '20211007')
group by event_id
order by count(customer_id) desc;

旁注:

  • a 和 b 是错误的别名。使用助记符,例如e 用于执行 table 和 m 用于主 table.
  • 在处理多个 table 时,限定所有列。比如customer_id属于哪个table?
  • 为什么count(customer_id)?客户 ID 是可为空的列吗?或者它是否驻留在执行 table 中并且您希望能够在某个时间外部加入此 table 并获得正确的零计数?或者计算表达式而不仅仅是行 (count(*)) 的原因是什么?