简体   繁体   English

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM