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

时间:2015-03-17 08:05:45

标签: php string excel csv

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

数据库目前在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

非常感谢大家!

1 个答案:

答案 0 :(得分:0)

假设您正在使用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

Demo