Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 按键将记录分组到具有多列的单行中_Sql_Sql Server_Select - Fatal编程技术网

Sql 按键将记录分组到具有多列的单行中

Sql 按键将记录分组到具有多列的单行中,sql,sql-server,select,Sql,Sql Server,Select,我正在努力使数据按我希望的方式排列。 本质上,我的目标是通过观察集装箱进出这些地点的时间来跟踪集装箱的行程,测量集装箱在这些地点花费的时间 这张桌子就是我的照片 我的代码在下面 INSERT #EXAMTIME SELECT Container_FK ,case when Move_Indicator = '0' then OffChasisTime else null end ,case when Move_Indicator = '1' then OnChasisTime else nu

我正在努力使数据按我希望的方式排列。 本质上,我的目标是通过观察集装箱进出这些地点的时间来跟踪集装箱的行程,测量集装箱在这些地点花费的时间

这张桌子就是我的照片

我的代码在下面

INSERT #EXAMTIME
SELECT
Container_FK
,case when Move_Indicator = '0' then OffChasisTime else null end 
,case when Move_Indicator = '1' then OnChasisTime else null end 
,case when Move_Indicator = '1' then OffChasisTime else null end 
,case when Move_Indicator = '3' then OnChasisTime else null end 
,case when Move_Indicator = '3' then OffChasisTime else null end 
,case when Move_Indicator = '4' then OnChasisTime else null end 
FROM #EXTRACT
这是输出表

正如您所看到的,每个数据都在其自己的行中,我想按Container_FK进行分组,以便每个条目都有整个过程

非常感谢使用聚合:

select Container_FK,
       max(case when Move_Indicator = '0' then OffChasisTime else null end),
       max(case when Move_Indicator = '1' then OnChasisTime else null end),
       max(case when Move_Indicator = '1' then OffChasisTime else null end),
       max(case when Move_Indicator = '3' then OnChasisTime else null end),
       max(case when Move_Indicator = '3' then OffChasisTime else null end),
       max(case when Move_Indicator = '4' then OnChasisTime else null end)
from #EXTRACT
group by Container_FK;

请注意,
else null
是多余的,因此它只是浪费了键入。此外,如果
Move\u Indicator
是一个数字,则删除常数周围的双引号。数字应与数字进行比较,而不是与字符串进行比较。

由于某些记录不完整,因此当前存在空值,因此并非所有容器都有数据来填充所有列。这是从一个小的试用快照中记录数据,但稍后将在不应出现这种情况的生产能力中使用。虽然非常感谢,但我不知道你可以使用max-aggregate函数作为代理来允许分组。这是一个非常有用的技巧!整数是我将来要记住的东西。