mysql - 根据 OrderID 项目创建列

标签 mysql sql pivot-table

我正在使用一个基本表,我很好奇是否有可能让我的 ID 的所有内容都显示在同一行上?下面我展示了当前查询和输出的示例,以及我希望如何显示输出。

根据OrderID从 sample 订单中选择OrderID、Item、Quantity、Location

-----------------------------------
|OrderID | Item | Weight | Location|
-----------------------------------
    1     apple    4.2        Wi
    1     banana   2.1        Wi
    2     orange   1          Mi
    3     apple    1.8        Mn
    3     grape    .5         Mn    

我希望看到它像这样导出:

------------------------------------------------------
|OrderID | Apple | Banana | Orange | Grape | Location|
------------------------------------------------------
    1      4.2      2.1                         Wi
    2                          1                Mi
    3      1.8                        .5        Mn

最佳答案

您似乎需要条件聚合:

SELECT
    OrderID,
    MAX(CASE WHEN item = 'apple' THEN weight END) Apple,
    MAX(CASE WHEN item = 'banana' THEN weight END) Banana,
    MAX(CASE WHEN item = 'orange' THEN weight END) Orange,
    MAX(CASE WHEN item = 'grape' THEN weight END) Grape
    Location
FROM samples
GROUP BY OrderID, Location

关于mysql - 根据 OrderID 项目创建列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54201858/

相关文章:

php - 电报机器人插入数据库 PHP

sql - 按子记录数排序父记录

mysql - 旋转概念

excel - 如何使用VBA更改数据透视表的数据源?

mysql - 如何将 MySQL 数据库导出为 CSV

mysql - 使用相同的组合键连接两个表

mysql - 从 2 个表中调用数据并对其进行计数

mysql - 使用分布式查询 (OpenQuery) 执行插入触发器时出错

sql - 如何从 SQL Server 创建可移植插入?

Python-将不同大小的数据帧相乘