根据OrderID项目创建列

时间:2019-01-15 15:23:34

标签: mysql sql pivot-table

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

从样品订单中按OrderID选择OrderID,项目,数量,位置

-----------------------------------
|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

2 个答案:

答案 0 :(得分:1)

您似乎需要条件聚合:

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

答案 1 :(得分:0)

尝试一下 SELECT OrderID,如果item =苹果然后重量结束为苹果,则为case,当item = Banana然后重量结束为香蕉时,为case,当item = Orange然后重量结束为橙色时,..., 您的位置中的位置