我正在开发一个项目,并且我已经在MySQL中创建了一个数据透视表。
SELECT date,
MAX(IF(cropname = 'tomato', quantity, NULL)) AS Tomatoes,
MAX(IF(Cropname = 'apple', quantity, NULL)) AS Apples,
MAX(IF(cropname = 'banana', quantity, NULL)) AS Bananas,
MAX(IF(Cropname = 'bengal gram', quantity, NULL)) AS Bengal_Gram,
MAX(IF(Cropname = 'Spinach', quantity, NULL)) AS Spinach,
MAX(IF(Cropname = 'Beet Root', quantity, NULL)) AS Beet_Root
From tempcrop
Group by date;
目前我正在使用此代码制作数据透视表。我应该如何更改此代码以使其成为动态数据透视表,以便如果我将新记录添加到主表中,则会自动在此处重现。
我已经在stackoverflow以及其他网站上看到了其他问题。它没有用。我试过这段代码
SET @sql = NULL;
SELECT
GROUP_CONCAT(DISTINCT
CONCAT(
'MAX(IF(Cropname = ''',
cropname,
''', quantity, NULL)) AS ',
cropname
)
) INTO @sql
FROM tempcrop;
SET @sql = CONCAT('SELECT date, ', @sql, ' FROM tempcrop GROUP BY date');
答案 0 :(得分:0)
SET @sql = NULL;
SET @@group_concat_max_len = 5000;
SELECT
GROUP_CONCAT(DISTINCT
CONCAT(
'MAX(IF(cropname = ''',
cropname,
''', quantity, NULL)) AS ''',
cropname,''''
)
) INTO @sql
FROM
tempcrop;
SET @sql = CONCAT('SELECT date, ', @sql, ' FROM tempcrop');
PREPARE stmt FROM @sql;
EXECUTE stmt;
此代码完美无缺。