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函数作为代理来允许分组。这是一个非常有用的技巧!整数是我将来要记住的东西。