我需要知道如何将以下内容写入mysql让我给你举例如下。
当前表格数据
ID, Address, Price, Date
1, ABC, 25$, 2013-10-20
2, ABC1, 35$, 2013-10-20
3, ABC2, 45$, 2013-10-20
4, ABC3, 55$, 2013-10-20
5, ABC4, 65$, 2013-10-20
6, ABC, 25$, 2013-10-21
7, ABC1, 35$, 2013-10-21
8, ABC2, 25$, 2013-10-21
9, ABC3, 115$, 2013-10-21
10, ABC4, 65$, 2013-10-21
11, ABC, 25$, 2013-10-22
12, ABC1, 35$, 2013-10-22
13, ABC2, 345$, 2013-10-22
14, ABC3, 255$, 2013-10-22
15, ABC4, 65$, 2013-10-24
每天日期明智的数据存储在表格中,我想生成一个查询给我如下的数据。
Address, 2013-10-20, 2013-10-21, 2013-10-22
ABC , 25$ , 25$ , 25$
ABC1 , 35$ , 35$ , 35$
ABC2 , 45$ , 25$ , 345$
ABC3 , 55$ , 115$ , 225$
ABC4 , 65$ , 65$ , 25$
我希望每天在上面的数据中添加一个新列,以便我可以生成报告。如果有一些PHP解决方案,也请参考。
答案 0 :(得分:0)
SET @sql = NULL;
SELECT
GROUP_CONCAT(DISTINCT
CONCAT(
'MAX(CASE WHEN Date = ''',
Date,
''' then Price end) AS `', Date, '`' )
ORDER BY Date ) INTO @sql
FROM Table;
SET @sql = CONCAT('SELECT Address, ', @sql, ' FROM Table GROUP BY Address');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
答案 1 :(得分:0)
您可以使用我创建的代码。
SET @sql = NULL;
select GROUP_CONCAT(DISTINCT
CONCAT(' ROUND(SUM(CASE WHEN DATE_FORMAT(Date, ''%b %y'')=''',
DATE_FORMAT(Date, '%b %y'),
''' THEN Price ELSE 0 END)) AS ''',
DATE_FORMAT(Date, '%b %y'), ''''
)
ORDER BY Date)
INTO @sql
from Table ;
SET @sql = CONCAT('SELECT Address, ', @sql, ' FROM Table GROUP BY Address');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;