首页 > 解决方案 > 在 SQL 中将一行拆分为两部分的问题

问题描述

我想将一行分成两部分,我使用的是 UNION ALL。我得到了这两个部分,但结果不是我想要的。顺序乱了 我想要#3 和#4 行开关,以及#7 和#8 行开关位置。

在此处输入图像描述

原始行:

TIME, ORDER_NUM, THICKNESS, FORMULATION, SILO, SCREWOIL1_TEMP, SCREWOIL2_TEMP, MELTING_TEMP, FEEDER_LB, FEEDER_RPM, COMPOUND, RECLAIM_PERCENTAGE

所需的顺序应该是:

第一排:

TIME, ORDER_NUM, THICKNESS, FORMULATION, SILO, SCREWOIL1_TEMP, SCREWOIL2_TEMP

第二行:

TIME, MELTING_TEMP, FEEDER_LB, FEEDER_RPM, COMPOUND, RECLAIM_PERCENTAGE

标签: sql

解决方案


如果要交错记录,则需要额外的排序键。

select TIME, ORDER_NUM, THICKNESS, FORMULATION, SILO, SCREWOIL1_TEMP, SCREWOIL2_TEMP, MELTING_TEMP, FEEDER_LB, FEEDER_RPM, COMPOUND, RECLAIM_PERCENTAGE
from ((select TIME, ORDER_NUM, THICKNESS, FORMULATION, SILO, SCREWOIL1_TEMP, SCREWOIL2_TEMP, MELTING_TEMP, FEEDER_LB, FEEDER_RPM, COMPOUND, RECLAIM_PERCENTAGE,
              1 as priority
       from . . .
      ) union all
      (select TIME, MELTING_TEMP, FEEDER_LB, FEEDER_RPM, COMPOUND, RECLAIM_PERCENTAGE,
              2
       from . . .
      )
     ) t
order by time, priority;

请注意,列标题均取自union all. 结果集中的所有行都具有相同的列名。


推荐阅读