-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 サーバーなど)。mysqlに何かがあるかどうかはわかりません。

「T-SQL PIVOT」をグーグルで検索すると、T_SQL だけを使用してそれを行う方法の例がいくつか見つかります。

于 2012-12-28T10:41:42.670 に答える