我有一个查询,其输出类似于下表(参见当前输出),其中month是一列。我想要的是将月份名称作为标题,并将相同的项目代码和它们的数量组合在哪个月下,但仅限于一行。
当前输出:
Itemcode qty month
001 200 Jan
001 50 Feb
002 100 Feb
002 100 Apr
003 50 Mar
003 200 Apr
004 300 Jan
004 100 Mar
这就是我想要的
Itemcode Jan Feb Mar Apr ......
001 200 50
002 100 100
003 50 200
004 300 100
提前致谢
答案 0 :(得分:0)
SELECT
ItemCode,
MAX(CASE `month` WHEN 'Jan' THEN qty END) AS Jan,
MAX(CASE `month` WHEN 'Feb' THEN qty END) AS Feb,
MAX(CASE `month` WHEN 'Mar' THEN qty END) AS Mar,
MAX(CASE `month` WHEN 'Apr' THEN qty END) AS Apr
FROM
Table1
GROUP BY ItemCode
看到它在sqlfiddle中正常工作。
MySQL没有像SQL Server这样的便捷PIVOT
函数,所以你必须使用上面的代码。
但在我看来,输出格式化应该在应用层上完成,而不是在DB层。