-1

我在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

有什么帮助吗?

4

2 回答 2

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`;

看到这个 SQLFiddle

于 2012-12-28T08:06:20.893 回答
0

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

一些 DBMS 将有特殊的命令来处理它(如具有 PIVOT 和 UNPIVOT 的 SQl Server)。我不知道mysql是否有任何东西。

如果你用谷歌搜索“T-SQL PIVOT”,你会发现几个例子,说明如何只使用 T_SQL

于 2012-12-28T10:41:42.670 回答