为 Mysql 水平显示的数据创建视图

Creating view for Mysql data presented in horizontal way

抱歉主题不明确,但我不确定如何更好地描述我的情况

我有一个 table 类似于:

我被要求根据一些要求创建一个基于 table 的视图,结果应该是这样的:

(我硬编码这个 table 以显示我对视图的预期结果)

我对创建视图函数还很陌生,我试图在网上寻找解决方案,但我找不到太多有用的信息。

创建视图的语法非常简单:

create view <view name> as
    <select query here>;

您提出的问题是 return 恰好有五列的视图。您可以使用聚合查询来处理此问题:

create view v_name as
    select device_id,
           sum(case when device_type = 'A' then count else 0 end) as a,
           sum(case when device_type = 'B' then count else 0 end) as b,
           sum(case when device_type = 'C' then count else 0 end) as c,
           sum(case when device_type = 'D' then count else 0 end) as d
    from t  -- your table name here
    group by device_id;

需要注意的是,这个 return 正是 SELECT 中的类型——如果它们在 table 中,则没有其他类型。如果您需要灵活的列,那么您就有问题了。在任何给定时间构建对 return 值的动态查询并不难。但是,您不能将动态 SQL 放入视图中。如果这是您需要的东西,那么可能需要一些替代机制——例如 JSON。