我在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
任何帮助?
答案 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`;
答案 1 :(得分:0)
当您将行转换为列时,您正在讨论PIVOT操作。 Here是SO的一个例子。
有些DBMS会有特殊的命令来处理它(就像有SIVl和UNPIVOT的SQl服务器一样)。我不知道mysql是否有任何内容。
如果你谷歌“T-SQL PIVOT”你会发现几个如何使用T_SQL
的例子