-1

我有一个查询,其输出类似于下表(请参阅当前输出),其中月份是一列。我想要的是将月份名称作为标题并将相同的项目代码及其数量组合在哪个月份,但仅在一行中。

电流输出:

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              

提前致谢

4

1 回答 1

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 没有PIVOT像 SQL Server 这样方便的功能,因此您将不得不使用上述代码。

但在我看来,输出格式无论如何都应该在应用层完成,而不是在数据库层。

于 2013-06-07T12:40:27.803 回答