mysql - 列和行 (SQL)

标签 mysql sql

这是我的代码,

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/

相关文章:

mysql - 如何从数据库中按升序获取随机商店名称和价格?

php - 无法找出 mySQL 语法错误的来源

mysql - SQL查询检查之前和之后检查获取最近的日期

php - 使用 PHP 设置选定的属性

sql - 替代子查询的外部连接?

mysql - 如何在范围列表之间选择行

mysql - 使用 mysql 命令行客户端选择时如何查看数据中的空格

sql - Postgresql 中每月的最后一天

php - SQL 将行从一个表复制到另一个表但只复制一次

mysql - 需要创建一个查询来显示 April Roberts 的订单。我只需要输出来显示 OrderID 和 OrderDate。这是我到目前为止所拥有的