0

我正在尝试找出一个简单的方法来在 2 行值之间进行减法..

Num_groupe |  num_lot   |   num_secti | ship_date | qte_1 | qte_2 | qte_3 | qte_4
Instock    |    D2312   |   01        | 12-juin   | 10    | 30    | 10    | 10
Instock    |    D2312   |   09        | 12-juin   | 8     | 4     | 6     | 4
Instock    |    C7788   |   01        | 18-sept   | 30    | 10    | 25    | 25
Instock    |    C7788   |   09        | 18-sept   | 5     | 8     | 5     | 8
Instock    |    W3300   |   01        | 11-déc    | 10    | 25    | 30    | 10
Instock    |    W3300   |   09        | 11-déc    | 5     | 4     | 5     | 8
Instock    |    Q1234   |   01        | 03-févr   | 10    | 25    | 10    | 30
Instock    |    Q1234   |   09        | 03-févr   | 6     | 5     | 8     | 5

每个num_lot都有num_section01 和 09,现在我想在每个部分 lot 之间减去“数量值”。

前任。

lot D2312 | qte_1 :  10 - 8 = **2** | qte_2 : 30 - 4 = **26**  .....

预期结果

Num_groupe |  num_lot   |   num_secti | ship_date | qte_1 | qte_2 | qte_3 | qte_4
Instock    |    D2312   |   01        | 12-juin   | 2     | 26    | 6     | 6
Instock    |    C7788   |   01        | 18-sept   | 25    | 2     | 20    | 7

有什么建议吗?合并?苏米夫?我被困在这里:S

谢谢大家,GC

4

1 回答 1

0

我认为aSUM IF会完成任务。从示例中,我认为您想从 where num_sectiis的值中减去9它的值1。尝试以下查询:

SELECT
    Num_groupe,
    num_lot,
    ship_date,
    SUM( IF(num_secti = 1, qte_1, -1 * qte_1) ) AS qte_1,
    SUM( IF(num_secti = 1, qte_2, -1 * qte_2) ) AS qte_2,
    SUM( IF(num_secti = 1, qte_3, -1 * qte_3) ) AS qte_3,
    SUM( IF(num_secti = 1, qte_4, -1 * qte_4) ) AS qte_4
FROM <your table name>
GROUP BY num_lot

这是您示例中的小提琴:http ://sqlfiddle.com/#!2/d3095/2

于 2013-11-13T02:03:48.407 回答