簡體   English   中英

將單個表中的兩個不同值相加並減去其值並按pcode對它們進行分組

[英]sum two difrrent value from single table and subtract its value and group them by pcode

我有一個名為rsales的表。 例如,我可以從我的表“rsales”中獲得以下值

id | total | discount |  profit | remarks | p_code |
 1 |  20   |   2      |    5    |  sales  |  1234  |
 2 |  20   |   4      |   10    |  sales  |  1234  |
 3 |  20   |   6      |   15    |  sales  |  1234  | 
 5 |  20   |   2      |    5    |  return |  1234  |
 6 |  20   |   4      |   10    |  return |  1234  |
 7 |  10   |   5      |    5    |  sales  |  3333  |
 8 |  10   |   5      |    5    |  sales  |  3333  |
 9 |  10   |   5      |    5    |  sales  |  3333  |
10 |  10   |   5      |    5    |  return |  3333  |
11 |  10   |   5      |    5    |  return |  3333  |

我的問題是,我希望將所有值匯總為remarks =“sales”並將所有值匯總到remarks =“return”,然后在得到它的總和后,我想減去總額,其中備注='sales'總額,其中備注= 'return'並按pcode對它們進行分組。 所以以下輸出必須是這樣的。

 | total | discount |  profit |  p_code |
 |  20   |   6      |   15    |   1234  |
 |  10   |   5      |   5     |   3333  |

我有這個ff代碼,但它只能加上remarks ='return'的值

$result1 = mysql_query ("SELECT sum(total)  as tot,sum(discount) as dis, sum(profit) as prof   FROM rsales WHERE remarks ='return' GROUP by p_code ");

你需要條件求和。 假設remarks僅采用“sales”和“returns”的值,則以下是一種相對簡單的方法:

SELECT sum(case when remarks = 'sales' then total else - total end) as tot,
       sum(case when remarks = 'sales' then discount else - discount end) as discount,
       sum(case when remarks = 'sales' then profit else - profit end) as profit,
       p_code 
FROM rsales
GROUP by p_code;

暫無
暫無

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

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