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

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...