MySQL每月和分组的总金额(按类别)
我有一张桌子: 用户nvarchar(30) 日期时间 小数点总数(8,2) 我需要每月获得如下数据: 我可以这样得到它(没有月份列):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
但我需要它像上面的图片一样…使用
条件聚合
使用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是否适合您。。否则,我建议您阅读提供示例数据和预期结果以获得更准确的答案。考虑应用程序代码中的数据显示问题。