如何解决SQL如何将数据分为单独的月份列
因此,我正在运行此查询以获取客户的名称,订购的总金额以及他们提交的订单数量。通过此查询,我获得了他们从三月到七月的全部历史记录,我想要的是名称,三月总金额/订单数量,四月总金额/订单数量,可能总金额/订单数量.....等
SELECT customer_name,MONTH(created_on),SUM(amount),COUNT(order_id)
FROM customer_orders
WHERE created_on BETWEEN '2020-03-01' AND '2020-08-01'
GROUP BY customer_name,MONTH(created_on)
解决方法
如果要将值放在单独的列中,请使用条件聚合:
SELECT customer_name,SUM(CASE WHEN MONTH(created_on) = 3 THEN amount END) as march_amount,SUM(CASE WHEN MONTH(created_on) = 3 THEN 1 ELSE 0 END) as march_count,SUM(CASE WHEN MONTH(created_on) = 4 THEN amount END) as april_amount,SUM(CASE WHEN MONTH(created_on) = 4 THEN 1 ELSE 0 END) as april_count,. . .
FROM customer_orders
WHERE created_on >= '2020-03-01' AND
created_on < '2020-08-01'
GROUP BY customer_name;
请注意,我更改了日期过滤器,因此它不包括2020-08-01。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。