0

我只想问如何加入两个查询,唯一的区别是 where 语句。一个是with WHERE c.transac_type = 0,另一个是WHERE c.transac_type = 1"

我想在 WHERE c.transac_type = 0 和 WHERE c.transac_type = 1 的条件下查看 SUM(c.amount) 的输出,因为它们具有不同的 SUM(c.amount) 输出。

SELECT a.id, a.branch_code, SUM(c.amount), d.category, e.branch_commission 
FROM control_panel_client_create AS a
    RIGHT JOIN sales_add_h AS b ON a.id = b.branch_code_id 
    RIGHT JOIN sales_add_i AS c ON b.id = c.sales_h_id 
    RIGHT JOIN control_panel_item_create AS d ON c.item_code_id = d.id
    INNER JOIN control_panel_client_create AS e ON b.branch_code_id = e.id
    WHERE c.transac_type = 0 
GROUP BY d.category, b.branch_code_id ORDER BY SUM(c.amount) DESC
4

3 回答 3

1

你可以只使用IN(0,1)而不是联合。

尝试这个

    SELECT a.id, a.branch_code, SUM(c.amount), d.category, e.branch_commission 
FROM control_panel_client_create AS a
RIGHT JOIN sales_add_h AS b ON a.id = b.branch_code_id 
RIGHT JOIN sales_add_i AS c ON b.id = c.sales_h_id 
RIGHT JOIN control_panel_item_create AS d ON c.item_code_id = d.id
INNER JOIN control_panel_client_create AS e ON b.branch_code_id = e.id
WHERE c.transac_type IN (0, 1)
GROUP BY d.category, b.branch_code_id,c.transac_type  ORDER BY SUM(c.amount) DESC
于 2013-07-04T13:29:49.727 回答
1

如果您想要两个不同列中交易类型的总和,那么您想要使用条件聚合:

SELECT a.id, a.branch_code, SUM(c.amount) as totAmount,
       sum(case when c.transac_type = 0 then c.amount end) as Trans0_Amount,
       sum(case when c.transac_type = 1 then c.amount end) as Trans1_Amount,
       d.category, e.branch_commission 
FROM control_panel_client_create AS a
RIGHT JOIN sales_add_h AS b ON a.id = b.branch_code_id 
RIGHT JOIN sales_add_i AS c ON b.id = c.sales_h_id 
RIGHT JOIN control_panel_item_create AS d ON c.item_code_id = d.id
INNER JOIN control_panel_client_create AS e ON b.branch_code_id = e.id
WHERE c.transac_type IN (0, 1)
GROUP BY d.category, b.branch_code_id
ORDER BY SUM(c.amount) DESC
于 2013-07-04T14:02:00.723 回答
0

合并它会相当简单,但不确定它会给你有用的价值

SELECT a.id, a.branch_code, SUM(c.amount) AS AmountSum, d.category, e.branch_commission 
FROM control_panel_client_create AS a
    RIGHT JOIN sales_add_h AS b ON a.id = b.branch_code_id 
    RIGHT JOIN sales_add_i AS c ON b.id = c.sales_h_id 
    RIGHT JOIN control_panel_item_create AS d ON c.item_code_id = d.id
    INNER JOIN control_panel_client_create AS e ON b.branch_code_id = e.id
    WHERE c.transac_type = 0 
GROUP BY d.category, b.branch_code_id 
UNION
SELECT a.id, a.branch_code, SUM(c.amount) AS AmountSum, d.category, e.branch_commission 
FROM control_panel_client_create AS a
    RIGHT JOIN sales_add_h AS b ON a.id = b.branch_code_id 
    RIGHT JOIN sales_add_i AS c ON b.id = c.sales_h_id 
    RIGHT JOIN control_panel_item_create AS d ON c.item_code_id = d.id
    INNER JOIN control_panel_client_create AS e ON b.branch_code_id = e.id
    WHERE c.transac_type = 1 
GROUP BY d.category, b.branch_code_id 
ORDER BY AmountSum DESC

你可以得到两种交易类型的总和

SELECT a.id, a.branch_code, SUM(c.amount) AS AmountSum, d.category, e.branch_commission 
FROM control_panel_client_create AS a
    RIGHT JOIN sales_add_h AS b ON a.id = b.branch_code_id 
    RIGHT JOIN sales_add_i AS c ON b.id = c.sales_h_id 
    RIGHT JOIN control_panel_item_create AS d ON c.item_code_id = d.id
    INNER JOIN control_panel_client_create AS e ON b.branch_code_id = e.id
    WHERE c.transac_type IN (0, 1) 
GROUP BY d.category, b.branch_code_id 
ORDER BY AmountSum DESC

或者两者的总和

SELECT a.id, a.branch_code, SUM(c.amount) AS AmountSum, d.category, e.branch_commission , c.transac_type
FROM control_panel_client_create AS a
    RIGHT JOIN sales_add_h AS b ON a.id = b.branch_code_id 
    RIGHT JOIN sales_add_i AS c ON b.id = c.sales_h_id 
    RIGHT JOIN control_panel_item_create AS d ON c.item_code_id = d.id
    INNER JOIN control_panel_client_create AS e ON b.branch_code_id = e.id
    WHERE c.transac_type IN (0, 1) 
GROUP BY d.category, b.branch_code_id, c.transac_type
ORDER BY AmountSum DESC

将两个计数放在同一行的讨厌方法:-

SELECT a.id, a.branch_code, SUM(IF(c.transac_type=0,c.amount, 0)) AS AmountSumTransac_0, SUM(IF(c.transac_type=1, c.amount, 0)) AS AmountSumTransac_1, d.category, e.branch_commission 
FROM control_panel_client_create AS a
    RIGHT JOIN sales_add_h AS b ON a.id = b.branch_code_id 
    RIGHT JOIN sales_add_i AS c ON b.id = c.sales_h_id 
    RIGHT JOIN control_panel_item_create AS d ON c.item_code_id = d.id
    INNER JOIN control_panel_client_create AS e ON b.branch_code_id = e.id
    WHERE c.transac_type IN (0, 1) 
GROUP BY d.category, b.branch_code_id
ORDER BY AmountSum DESC
于 2013-07-04T13:29:37.417 回答