我的桌子看起来像这样:

Company Date    Status
-------------------------------------
ABC     1-Jan-19    Event
ABC     1-Feb-19    Event
ABC     1-Jan-19    Event
ABC     1-Feb-19    Event
DEF     1-Feb-19    Event
DEF     1-Mar-19    Event
DEF     1-Feb-19    Event
DEF     1-Mar-19    Event
GHI     1-Mar-19    Event
GHI     1-Mar-19    Event
JKL     1-Jan-19    Event
JKL     1-Feb-19    Event
JKL     1-Feb-19    Event
JKL     1-Mar-19    Event


我试图找出我每个月有多少家活跃公司。一个活跃的公司通过在该月中至少举行一次活动进行分类。

请参阅上面数据的下表。我只在寻找该月的月份和活跃公司的最终结果。

           Jan  Feb Mar
    ABC     2   2
    DEF         2   2
    GHI             2
    JKL     1   2   1
    -------------------
    Active  2   3   3


当然,这将是一个观点。

在此先感谢您的帮助。

最佳答案

您可以使用条件聚合来透视数据,并使用WITH ROLLUP生成摘要记录:

CREATE VIEW my_view AS
SELECT
    company,
    SUM(YEAR(my_date) = 2019 AND MONTH(my_date) = 1 AND status = 'Event') Jan,
    SUM(YEAR(my_date) = 2019 AND MONTH(my_date) = 2 AND status = 'Event') Feb,
    SUM(YEAR(my_date) = 2019 AND MONTH(my_date) = 3 AND status = 'Event') Mar
FROM my_table
GROUP BY company WITH ROLLUP;


笔记:


这假定date是类似日期的数据类型
在条件中包含YEAR()总是一个好主意;毫无疑问,您的数据可能会散布几年
date不是列名的最佳选择,因为它与保留字冲突。我将其重命名为my_date

关于mysql - 如何按月创建活跃公司的 View ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58329781/

10-11 05:27