将行数据显示为列格式

时间:2012-12-28 06:46:42

标签: mysql sql

我在mysql数据库中有以下格式的数据 -

itemName      Date      isAvailable
abc        1/12/2012    yes
xyz        1/12/2012    No
aaa        1/12/2012    yes

abc        2/12/2012    no
xyz        2/12/2012    no
aaa        2/12/2012    yes

abc        3/12/2012    no
xyz        3/12/2012    yes
aaa        3/12/2012    yes
new        3/12/2012    yes

我想以下列格式收集数据 -

itemName   1/12/2012    2/12/2012   3/12/2012
abc       yes             no        no
xyz       no              no        yes
aaa       yes             yes       yes
new        -              -         yes

任何帮助?

2 个答案:

答案 0 :(得分:0)

试试这个:

SELECT itemName,
       GROUP_CONCAT(CASE Date_format(`Date`,'%Y-%d-%m') WHEN '2012-01-12' THEN `isAvailable` ELSE NULL END) AS `2012-01-12`
      ,GROUP_CONCAT(CASE Date_format(`Date`,'%Y-%d-%m') WHEN '2012-02-12' THEN `isAvailable` ELSE NULL END) AS `2012-02-12`
      ,GROUP_CONCAT(CASE Date_format(`Date`,'%Y-%d-%m') WHEN '2012-03-12' THEN `isAvailable` ELSE NULL END) AS `2012-03-12`
FROM Table1
GROUP BY `itemName`;

See this SQLFiddle

答案 1 :(得分:0)

当您将行转换为列时,您正在讨论PIVOT操作。 Here是SO的一个例子。

有些DBMS会有特殊的命令来处理它(就像有SIVl和UNPIVOT的SQl服务器一样)。我不知道mysql是否有任何内容。

如果你谷歌“T-SQL PIVOT”你会发现几个如何使用T_SQL

的例子