风飘落雪 2024-05-07 09:54 采纳率: 100%
浏览 2
已结题

关于#sql#的问题:有个所有设备更换零件的记录表,目前想形成以设备为主的拆装记录

有个所有设备更换零件的记录表,目前想形成以设备为主的拆装记录。

img

img

  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-05-07 09:54
    关注

    引自免费微信小程序:皆我百晓生

    为了创建一个以设备为主的拆装记录,我们需要从给定的数据中提取出每个设备的安装和卸载事件,并按照时间顺序排列。假设原始数据存储在一个名为device_parts的表中,其结构如下:

    CREATE TABLE device_parts (
        id INT PRIMARY KEY,
        device_id VARCHAR(255),
        part_name VARCHAR(255),
        operation_date DATE,
        operation_type ENUM('安装', '卸载')
    );
    

    根据提供的数据,我们可以编写一条SQL查询来获取所需的结果。首先,我们需要分别找出每台设备的最新安装和卸载日期,然后将它们组合在一起。

    以下是完成这个任务的SQL查询:

    SELECT
        device_id AS "JJGZJLBS",
        part_name AS "GXBS",
        MAX(CASE WHEN operation_type = '安装' THEN operation_date END) AS "JJBS",
        MIN(CASE WHEN operation_type = '卸载' THEN operation_date END) AS "GZRQ",
        COUNT(*) AS "GZLX"
    FROM
        device_parts
    GROUP BY
        device_id, part_name
    ORDER BY
        device_id, GZRQ DESC;
    

    这段代码执行了以下操作:

    1. 使用CASE语句根据操作类型筛选出安装和卸载的日期。
    2. MAX函数用于找到每个设备和零件的最新安装日期,而MIN函数用于找到最近的卸载日期。
    3. 使用COUNT(*)计算同一设备和零件的拆装次数(即GZLX列)。
    4. 使用GROUP BY按设备ID和零件名进行分组,这样可以确保为每个独特的设备-零件组合返回一行数据。
    5. 最后,使用ORDER BY对结果进行排序,首先是设备ID,然后是最近的卸载日期。

    执行此查询后,您将得到所需的输出结果,其中包含了每个设备及其对应的零件的安装和卸载信息。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 5月15日
  • 已采纳回答 5月7日
  • 创建了问题 5月7日