如何在 sql 语句中两次使用 SELECT 子句

时间:2021-04-30 18:45:25

标签: mysql sql

我想要一个表格,我可以在其中将今天的余额和昨天的余额视为两个不同的列。有什么办法可以从两个不同的日期中进行选择吗?

以下是我尝试过的 SQL 语句,但是我看不到昨天的余额。

(SELECT food.food_id, food.food_name, food.food_chi_name, food.food_category, food.chinesechar, SUM(inventory.tmr_input+inventory.final_balance), SUM(inventory.balance), SUM(inventory.input), SUM(inventory.reject), SUM(inventory.final_balance), SUM(inventory.tmr_input), SUM(inventory.sale), SUM(inventory.theoritical), SUM(inventory.yest_theoritical), SUM(inventory.3PMsale), SUM(inventory.3PMbalance), SUM(inventory.wholesale) FROM inventory INNER JOIN food ON inventory.food_id=food.food_id WHERE food.outlet = 'T11' AND inventory.date = '04/30/2021' GROUP BY food.food_id ORDER BY food.food_id ASC); (SELECT SUM(inventory.balance) as yesterday_balance FROM inventory INNER JOIN food ON inventory.food_id=food.food_id WHERE food.outlet = 'T11' AND inventory.date = '04/29/2021' GROUP BY food.food_id ORDER BY food.food_id ASC);

1 个答案:

答案 0 :(得分:0)

您可以为此使用子选择

使用别名有助于获得更好的概览

SELECT 
    f1.food_id
    , f1.food_name
    , f1.food_chi_name
    , f1.food_category
    , f1.chinesechar
    , SUM(i1.tmr_input+i1.final_balance)
    , SUM(i1.balance)
    , SUM(i1.input)
    , SUM(i1.reject)
    ,SUM(i1.final_balance)
    , SUM(i1.tmr_input)
    , SUM(i1.sale)
    , SUM(i1.theoritical)
    , SUM(i1.yest_theoritical)
    , SUM(i1.`3PMsale`)
   , SUM(i1.`3PMbalance`)
    , SUM(i1.wholesale) 
    ,(SELECT SUM(i2.balance)  
    FROM 
    inventory i2 INNER JOIN food f2 ON i2.food_id=f2.food_id 
    WHERE f2.outlet = 'T11' AND i2.date = '04/29/2021' 
    AND  f2.food_id  = f1.food_id
    ) as yesterday_balance
FROM 
    inventory i1
        INNER JOIN 
    food f1 ON i1.food_id=f1.food_id 
WHERE 
    f1.outlet = 'T11' 
    AND i1.date = '04/30/2021' 
GROUP BY f1.food_id 
ORDER BY f1.food_id ASC; 
相关问题