微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从SQL表插入和转换数据

我有一个问题一直困扰着我几天.我有一张桌子:

>日期
> ID
> Status_ID
> Start_Time
> End_Time
> Status_Time(秒)(他们如何处于特定状态,以秒为单位)

我想将此数据放在另一个表中,该表将Status_ID分组为列.此表包含如下列:

>日期
> ID
>午餐(以秒为单位)
>休息(以秒为单位)
>假期,(以秒为单位)等

因此,Status_ID 2和3可能会在休假,Status_ID 1午餐等分组.

我曾想过在一个while循环中嵌套一个Case,遍历每一行以插入到我的另一个表中.但是,我无法将这些数据从行中的Status_ID插入到现在按其分组的列中.

解决方法

不需要WHILE循环.
SELECT
    date,id,SUM(CASE WHEN status_id = 1 THEN status_time ELSE 0 END) AS lunch,SUM(CASE WHEN status_id = 2 THEN status_time ELSE 0 END) AS break,SUM(CASE WHEN status_id = 3 THEN status_time ELSE 0 END) AS vacation
FROM
    My_Table
GROUP BY
    date,id

此外,将status_time保留在表中是一个错误(除非它是非持久的计算列).您实际上是将相同的数据存储在数据库中的两个位置,这最终会导致不一致.将此数据推送到另一个表中也是如此,其中按状态类型划分时间.不要创建新表来保存数据,使用查询在需要时获取数据.

原文地址:https://www.jb51.cc/mssql/83323.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐