这是我的代码,
select concat(month(b.delivery_date), "/", year(b.delivery_date)) as month_year, b.company, sum(b.subtotal) as revenue
from all_company a, all_order_summary b
where a.company_id = b.company_id and a.paid = 1 and year(b.delivery_date) = 2017
group by year(b.delivery_date), month(b.delivery_date)
这会打印出这样的内容:
月_年|公司|收入
| 01/2017 | ABC123 | 500000
| 02/2017 | ABC123 | 100000
| 01/2017 | DEF456 | 30万
| 02/2017 | DEF456 | 80万
我希望它以这种方式打印,
[ 空间 ] 01/2017 | 02/2017
ABC123 | 500000 | 100000 |
DEF456 | 300000 | 800000 |
我可以做什么来改变这个? (我对 SQL 比较陌生)
最佳答案
通过使用 PIVOT 我们可以实现这一点。 下面提到的查询为您提供了您想要的结果:
SELECT *
FROM (
SELECT
Revenue, company, month_year
FROM companies
) as s
PIVOT
(
SUM(Revenue)
FOR month_year IN ([01/2017], [02/2017])
)AS pvt
我提到的表名称为“companies”,根据您的实际表名称进行修改
关于mysql - 列和行 (SQL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45626369/