如何将此数据列表压缩到一个字段中


How can I compress this list of data into one field?

我有一个数据库,列出了每个车型年份每个品牌和型号的装饰和发动机,并在每行中列出了Trim & Engine到Make&Model。我想将这些数据压缩并输出到CSV电子表格中,以便每个品牌和型号都在一行上,修剪和引擎数据分别压缩到一列中。

数据库目前是SQL格式,所以我可以在服务器端执行此操作(例如,PHP,然后输出为CSV格式),或者我可以将数据输出为CSV格式并在我的计算机上操作数据(例如,使用Excel,如果甚至可以这样做,或者其他东西)。我估计大约有 50,000 行将被压缩到大约 8,000 行。

我想拿这个:

Vehicle:                    Trim:           Engine: Year:
Chevrolet Impala            LS              2.5L    2015    
Chevrolet Impala            LS              3.6L    2015    
Chevrolet Impala            LT              2.5L    2015    
Chevrolet Impala            LT              3.6L    2015    
Chevrolet Impala            LTZ             2.5L    2015    
Chevrolet Impala            LTZ             3.6L    2015    
Chevrolet Malibu            LS              2.5L    2015    
Chevrolet Malibu            LT              2.0L    2015    
Chevrolet Malibu            LT              2.5L    2015    
Chevrolet Malibu            LTZ             2.0L    2015    
Chevrolet Malibu            LTZ             2.5L    2015    
Chevrolet Silverado 1500    High Country    5.3L    2015    
Chevrolet Silverado 1500    High Country    6.2L    2015    
Chevrolet Silverado 1500    LT              4.3L    2015    
Chevrolet Silverado 1500    LT              5.3L    2015    
Chevrolet Silverado 1500    LTZ             5.3L    2015    
Chevrolet Silverado 1500    LTZ             6.2L    2015    
Chevrolet Silverado 1500    WT              4.3L    2015    
Chevrolet Silverado 1500    WT              5.3L    2015

并将其压缩成独特的行:

Unique Vehicle:             Unique Trims:               Unique Engines:     Year:
Chevrolet Impala            LS, LT, LTZ                 2.5L, 3.6L          2015
Chevrolet Malibu            LS, LT, LTZ                 2.0L, 2.5L          2015
Chevrolet Silverado 1500    High Country, LT, LTZ, WT   4.3L, 5.3L, 6.2L    2015

非常感谢大家!

假设你使用的是MySQL(你没有指定),那么你可以使用GROUP_CONCAT()函数

SELECT vehicle,
       GROUP_CONCAT(DISTINCT trim ORDER BY trim) AS unique_trims,
       GROUP_CONCAT(DISTINCT engine ORDER BY engine) AS unique_engines,
       year 
  FROM vehicles 
 GROUP BY vehicle,
          year 
 ORDER BY vehicle, 
          year

演示