SQL。如何根据值'将具有相同ID的两条记录合并为一行;它在一列中
SQL Server 2012:如何根据列(PalletType)中的值将具有相同ID(TransportOrder)的两条记录合并为一行 示例:678号订单有两行,其中一行为europallet en 3,中间为europallet。因此,取消订单只需要1个TransportEuropalletPlace 输出应为678号订单的一行,说明总共有4个Europallet(两行的总和1+3)和1个TransportEuropalletPlace(总和1+0) 如何使用SQL查询实现这一点 原始输出: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查询实现这一点 原始输出
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)函数做得很好。通过这个例子,我在查询中找到了一个解决方案。非常感谢。