簡體   English   中英

將多行MySQL行變成多列和一行

[英]Turn multiple-row MySQL rows into multiple columns and a single row

以下MySQL查詢

SELECT
    `FBM_Orders`.`order-id`,
    `FBM_Orders`.`purchase-date`,
    `FBM_Orders`.`buyer-name`,
    `FBM_Orders`.`sku`,
    `IM_INV`.`LOC_ID`,
    `IM_INV`.`QTY_ON_HND`
FROM
    `FBM_Orders`
LEFT JOIN `IM_INV` ON `FBM_Orders`.`sku` = `IM_INV`.`ITEM_NO`
WHERE
    `FBM_Orders`.`quantity-to-ship` > 0
ORDER BY
    `FBM_Orders`.`purchase-date`,
    `IM_INV`.`LOC_ID` ASC;

產量

| order-id          |  purchase-date          |  buyer-name | sku   |LOC_ID|QTY_ON_HND|
|112-9548231-5585051|2017-09-11T21:34:27+00:00|Zacchary Motz|IE51198|AF    | 2        |
|112-9548231-5585051|2017-09-11T21:34:27+00:00|Zacchary Motz|IE51198|LO    | 1        |
|112-9548231-5585051|2017-09-11T21:34:27+00:00|Zacchary Motz|IE51198|S     | 1        |
|112-9548231-5585051|2017-09-11T21:34:27+00:00|Zacchary Motz|IE51198|SL    | 0        |

我到處尋找有類似問題的帖子,但是它們都使用GROUP_CONCAT,並且得到的結果與我所尋找的結果不同。 我想知道如何獲得結果

| order-id  | purchase-date  | buyer-name  | sku   | AF_QTY | LO_QTY | S_QTY  | SL_QTY |
|112-95482..|2017-09-11T21...|Zacchary Motz|IE51198|   2    |   1    |   1    |   0    |

謝謝

對於所需的結果集,您可以根據LOC_ID使用QTY_ON_HND的條件和

SELECT
    o.`order-id`,
    o.`purchase-date`,
    o.`buyer-name`,
    o.`sku`,
    SUM(CASE WHEN i.`LOC_ID` =  'AF' THEN i.QTY_ON_HND ELSE 0 END) AF_QTY,
    SUM(CASE WHEN i.`LOC_ID` =  'LO' THEN i.QTY_ON_HND ELSE 0 END) LO_QTY,
    SUM(CASE WHEN i.`LOC_ID` =  'S' THEN i.QTY_ON_HND ELSE 0 END) S_QTY,
    SUM(CASE WHEN i.`LOC_ID` =  'SL' THEN i.QTY_ON_HND ELSE 0 END) SL_QTY,
    i.`LOC_ID`,
    i.`QTY_ON_HND`
FROM
    `FBM_Orders` o
LEFT JOIN `IM_INV` i ON o.`sku` = i.`ITEM_NO`
WHERE
    o.`quantity-to-ship` > 0
GROUP BY o.`order-id`,
    o.`purchase-date`,
    o.`buyer-name`,
    o.`sku`
ORDER BY
    o.`purchase-date`

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM