MySQL每月和分组的总金额(按类别)

MySQL每月和分组的总金额(按类别),mysql,Mysql,我有一张桌子: 用户nvarchar(30) 日期时间 小数点总数(8,2) 我需要每月获得如下数据: 我可以这样得到它(没有月份列): 但我需要它像上面的图片一样…使用条件聚合使用case when expression select user,max(case when month='January' then total end) as Jan, max(case when month='February' then total end) as Feb, max(case when mo

我有一张桌子: 用户nvarchar(30) 日期时间 小数点总数(8,2)

我需要每月获得如下数据:

我可以这样得到它(没有月份列):


但我需要它像上面的图片一样…

使用
条件聚合
使用
case when expression

select user,max(case when month='January' then total end) as Jan,
max(case when month='February' then total end) as Feb,
max(case when month='March' then total end) as Mar,
max(case when month='April' then total end) as Apr,
max(case when month='May' then total end) as May,
max(case when month='June' then total end) as June,
----
from
(
SELECT User, MONTHNAME(Date) as month, SUM(Total) as total
FROM `wp_banking_expenses` 
group by month,User
)A group by user

使用
条件聚合
表达式时使用
大小写

select user,max(case when month='January' then total end) as Jan,
max(case when month='February' then total end) as Feb,
max(case when month='March' then total end) as Mar,
max(case when month='April' then total end) as Apr,
max(case when month='May' then total end) as May,
max(case when month='June' then total end) as June,
----
from
(
SELECT User, MONTHNAME(Date) as month, SUM(Total) as total
FROM `wp_banking_expenses` 
group by month,User
)A group by user

您可以尝试使用条件聚合函数

SELECT  User, 
        SUM(CASE WHEN MONTHNAME(Date) =  'January' THEN Total END) as Jan, 
        SUM(CASE WHEN MONTHNAME(Date) =  'February' THEN Total END) as Feb,
        SUM(CASE WHEN MONTHNAME(Date) =  'March' THEN Total END) as Mar,
        SUM(CASE WHEN MONTHNAME(Date) =  'April' THEN Total END) as Apr,
        SUM(CASE WHEN MONTHNAME(Date) =  'May' THEN Total END) as May,
        SUM(CASE WHEN MONTHNAME(Date) =  'June' THEN Total END) as JUN,
        SUM(CASE WHEN MONTHNAME(Date) =  'July' THEN Total END) as JUL, 
        SUM(CASE WHEN MONTHNAME(Date) =  'August' THEN Total END) as AUG,
        SUM(CASE WHEN MONTHNAME(Date) =  'September' THEN Total END) as SEP,
        SUM(CASE WHEN MONTHNAME(Date) =  'October' THEN Total END) as OCT,
        SUM(CASE WHEN MONTHNAME(Date) =  'November' THEN Total END) as NOV,
        SUM(CASE WHEN MONTHNAME(Date) =  'December' THEN Total END) as DEC
FROM `wp_banking_expenses` 
group by User

您可以尝试使用条件聚合函数

SELECT  User, 
        SUM(CASE WHEN MONTHNAME(Date) =  'January' THEN Total END) as Jan, 
        SUM(CASE WHEN MONTHNAME(Date) =  'February' THEN Total END) as Feb,
        SUM(CASE WHEN MONTHNAME(Date) =  'March' THEN Total END) as Mar,
        SUM(CASE WHEN MONTHNAME(Date) =  'April' THEN Total END) as Apr,
        SUM(CASE WHEN MONTHNAME(Date) =  'May' THEN Total END) as May,
        SUM(CASE WHEN MONTHNAME(Date) =  'June' THEN Total END) as JUN,
        SUM(CASE WHEN MONTHNAME(Date) =  'July' THEN Total END) as JUL, 
        SUM(CASE WHEN MONTHNAME(Date) =  'August' THEN Total END) as AUG,
        SUM(CASE WHEN MONTHNAME(Date) =  'September' THEN Total END) as SEP,
        SUM(CASE WHEN MONTHNAME(Date) =  'October' THEN Total END) as OCT,
        SUM(CASE WHEN MONTHNAME(Date) =  'November' THEN Total END) as NOV,
        SUM(CASE WHEN MONTHNAME(Date) =  'December' THEN Total END) as DEC
FROM `wp_banking_expenses` 
group by User

需要再调整一下。。返回完整的月份名称,如
一月、二月
,因此案例将不匹配也注意到
MONTHNAME()
只能处理日期数据类型,因此返回INT数据类型的
FROM_UNIXTIME()
在查询中应无效并返回
NULL
。。请看,需要进一步调整。。返回完整的月份名称,如
一月、二月
,因此案例将不匹配也注意到
MONTHNAME()
只能处理日期数据类型,因此返回INT数据类型的
FROM_UNIXTIME()
在查询中应无效并返回
NULL
。。请看,需要进一步调整。。返回完整的月份名称,如
一月、二月
,因此案例不会match@RaymondNijland感谢您刚才注意到
MONTHNAME()
只能处理日期数据类型,因此返回INT数据类型的
FROM_UNIXTIME()
在您的查询中应该无效并返回
NULL
。。请看,需要进一步调整。。返回完整的月份名称,如
一月、二月
,因此案例不会match@RaymondNijland感谢您刚才注意到
MONTHNAME()
只能处理日期数据类型,因此返回INT数据类型的
FROM_UNIXTIME()
在您的查询中应该无效并返回
NULL
。。请参阅我在手册中注意到的
MONTHNAME()
只能处理日期数据类型,因此返回INT数据类型的
FROM_UNIXTIME()
在查询中应无效并返回
NULL
。。请参阅检查现有Anwer是否适合您。。否则,我建议您阅读以提供示例数据和预期结果以获得更准确的答案。考虑应用程序代码中的数据显示问题。我注意到在手册<代码> MththNAME()中/代码>只能在日期数据类型上工作,所以<代码> FasuUnTimeTime()返回INT数据类型的应无效,并在查询中返回
NULL
。。请参阅检查现有Anwer是否适合您。。否则,我建议您阅读提供示例数据和预期结果以获得更准确的答案。考虑应用程序代码中的数据显示问题。