SQL。如何根据值'将具有相同ID的两条记录合并为一行;它在一列中

SQL。如何根据值'将具有相同ID的两条记录合并为一行;它在一列中,sql,sql-server,sql-server-2012,Sql,Sql Server,Sql Server 2012,SQL Server 2012:如何根据列(PalletType)中的值将具有相同ID(TransportOrder)的两条记录合并为一行 示例:678号订单有两行,其中一行为europallet en 3,中间为europallet。因此,取消订单只需要1个TransportEuropalletPlace 输出应为678号订单的一行,说明总共有4个Europallet(两行的总和1+3)和1个TransportEuropalletPlace(总和1+0) 如何使用SQL查询实现这一点 原始输出

SQL Server 2012:如何根据列(PalletType)中的值将具有相同ID(TransportOrder)的两条记录合并为一行

示例:678号订单有两行,其中一行为europallet en 3,中间为europallet。因此,取消订单只需要1个TransportEuropalletPlace

输出应为678号订单的一行,说明总共有4个Europallet(两行的总和1+3)和1个TransportEuropalletPlace(总和1+0)

如何使用SQL查询实现这一点

原始输出:

TransportOrder   PalletType            Quantity    TransportEuropalletPlace
--------------------------------------------------------------------------
      123        Minipallet               1                0.5
      345        Europallet               1                1
      678        Europallet               1                1
      678        BetweenEuropallet        3                0
      900        Europallet               2                2
订单678所需的输出:

TransportOrder   PalletType    Quantity    TransportEuropalletPlace 
--------------------------------------------------------------------------
     123         Minipallet       1              0.5 
     345         Europallet       1              1 
     678         Europallet       4              1 
     900         Europallet       2              2 

这应该让你开始:

SELECT
    TransportOrder,
    SUM(ISNULL(Europallet,0) + ISNULL(BetweenEuropallet, 0)) as 'Pallets'
FROM Table_Name
GROUP BY TransportOrder

您应该按列
TransportOrder
分组,如下所示:

select
  transportorder,
  max(pallettype) as pallettype,
  sum(quantity) as quantity,
  sum(transporteuropalletplace) as transporteuropalletplace
from my_table
group by transportorder

我认为这个查询不会合并两行
678
,因为它们有不同的
PalletType
。为什么合并的行在
PalletType
列中有
Europallet
而不是
betweeUropallet
?或者这不重要?作为物流单位,你从Europallet开始,在上面放上Prudent盒子,然后在盒子上面放一个新的Europallet。这就是我们称之为“中间神经细胞”的欧洲细胞。以这种方式构建了一个带有产品的Transposrt单元。Onder 1 Europallet及以上所谓的中间粒子(与产品剂量之间)。因此,我们必须说,这个传输单元有多少这样的Europalet。在我的示例中,假设总共有4个Europallet,但它在卡车中只占一个Europallet位置。更新:在我的示例中,我应该选择MIN(pallettype)作为pallettype,以便进入组合行Europallet,而不是pallettype列中的BetweeUropallet。在字符串数据类型上使用Min(Max)函数做得很好。通过这个例子,我在查询中找到了一个解决方案。非常感谢。