加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

从SQL表插入和转换数据

发布时间:2020-12-12 16:23:49 所属栏目:MsSql教程 来源:网络整理
导读:我有一个问题一直困扰着我几天.我有一张桌子: 日期 ID Status_ID Start_Time End_Time Status_Time(秒)(他们如何处于特定状态,以秒为单位) 我想将此数据放在另一个表中,该表将Status_ID分组为列.此表包含如下列: 日期 ID 午餐(以秒为单位) 休息(以秒为单位)
我有一个问题一直困扰着我几天.我有一张桌子:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读