[英]SQL. How to combine two records with the same ID into one line based on value's in a column
SQL Server 2012: how to combine two records with the same ID (TransportOrder) into one line based on value's in a column (PalletType)? SQL Server 2012:如何基于列(PalletType)中的值将具有相同ID(TransportOrder)的两个记录合并为一行?
Example: order 678 has two lines with 1 europallet en 3 BetweenEuropallet. 示例:订单678有两行带有1 europallet和3 BetweenEuropallet。 So de order takes only 1 TransportEuropalletPlace.
因此,de order只需要1个TransportEuropalletPlace。
The output should be in the case of order 678, one line, telling there is total 4 europallets (sum 1 + 3 from two lines) and 1 TransportEuropalletPlace (SUM 1 + 0) 在678号订单的情况下,输出应为一行,表明总共有4个europallet(两行的总和为1 + 3)和1个TransportEuropalletPlace(总和1 + 0)
How to achieve this with SQL query? 如何用SQL查询实现呢?
Original output: 原始输出:
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
Output needed for order 678: 订单678所需的输出:
TransportOrder PalletType Quantity TransportEuropalletPlace
--------------------------------------------------------------------------
123 Minipallet 1 0.5
345 Europallet 1 1
678 Europallet 4 1
900 Europallet 2 2
This should get you started: 这应该使您开始:
SELECT
TransportOrder,
SUM(ISNULL(Europallet,0) + ISNULL(BetweenEuropallet, 0)) as 'Pallets'
FROM Table_Name
GROUP BY TransportOrder
You should group by the column TransportOrder
, as in: 您应按
TransportOrder
列进行分组,如下所示:
select
transportorder,
max(pallettype) as pallettype,
sum(quantity) as quantity,
sum(transporteuropalletplace) as transporteuropalletplace
from my_table
group by transportorder
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.