如何在MySQL中将行拆分为多个列

时间:2017-06-06 07:14:27

标签: mysql pivot-table

problem

嗨,有人可以帮助我,我有一些关于如何将此行分成具有相同ID号的列的问题。我尝试了一些SQL函数,如GROUP_CONCAT()SUBSTRING_INDEX()函数,但我不知道它是如何工作的

Output

我希望输出看起来像这样

3 个答案:

答案 0 :(得分:1)

它应该可以解决您的问题:

INSERT INTO output SELECT
    input.ID,
    MIN(input.Unit_Cost),
    MAX(input.Unit_Cost)
FROM input
GROUP BY input.ID

答案 1 :(得分:0)

您可以尝试数据透视表查询:

SELECT 
    t1.`Unit_Cost` as `Unit_Cost1`,
    ifnull(t2.`Unit_Cost`,'') as `Unit_Cost2`
FROM table t1
LEFT JOIN table t2
ON t1.`ID` = t2.`ID`
GROUP BY `ID`
ORDER BY `ID`

答案 2 :(得分:0)

我想你不能将它与列分开,因为当ID对于无限行数相同时,你理论上可以有无限数量的列。但您可以按照建议设置GROUP_CONCACT(),然后将应用中的值与例如split()函数分开。

SELECT ID, GROUP_CONCAT(Unit_Cost SEPARATOR ';') Unit_Cost
FROM CostTable
GROUP BY ID
<{> Here are more examples GROUP_CONCAT()