2013-02-13 122 views
3

我希望能够从两个SELECT查询中获取在SUM()中生成的两个值,并减去这些值以获得结果( OutstandingFunds)。MySQL - 希望减去两个SELECT语句中的两个SUM()值

这是我的两个SELECT查询:

声明(1):

SELECT SUM(Cf.Amount) AS ClearedFunds 
FROM (
SELECT Amount FROM PAYMENT1 WHERE `Status` = "Cleared" 
UNION ALL 
SELECT Amount FROM PAYMENT2 WHERE `Status` = "Cleared" 
UNION ALL 
SELECT Amount FROM PAYMENT3 WHERE `Status` = "Cleared") AS Cf; 

声明(2):

SELECT SUM(Price) AS TotalSales 
FROM PROPERTY 
WHERE Status = “Sold”; 

谢谢您的时间

回答

5

如果您不需要单独显示总销售额和清算资金的小计,您可以这样做:

SELECT SUM(Total.`Price`) AS ClearedFunds 
FROM (
    SELECT `Price` FROM PROPERTY WHERE `Status` = 'Sold' 
    UNION ALL 
    SELECT (`Amount` * -1) AS `Price` FROM PAYMENT1 WHERE `Status` = 'Cleared' 
    UNION ALL 
    SELECT (`Amount` * -1) AS `Price` FROM PAYMENT2 WHERE `Status` = 'Cleared' 
    UNION ALL 
    SELECT (`Amount` * -1) AS `Price` FROM PAYMENT3 WHERE `Status` = 'Cleared' 
) AS Total; 

我假设你是想从这里销售总额减去清算资金。

+0

感谢。它非常完美! :) – Steve 2013-02-13 01:57:48

0

您可以使用SELECT ... INTO ...,你的情况:

SELECT SUM(Cf.Amount) AS ClearedFunds 
FROM (
SELECT Amount FROM PAYMENT1 WHERE `Status` = "Cleared" 
UNION ALL 
SELECT Amount FROM PAYMENT2 WHERE `Status` = "Cleared" 
UNION ALL 
SELECT Amount FROM PAYMENT3 WHERE `Status` = "Cleared") INTO @cf; 

SELECT SUM(Price) AS TotalSales 
FROM PROPERTY 
WHERE Status = “Sold” INTO @ts; 

然后你就可以。减去或以任何其它查询中使用它们,就像这样:

SELECT @ts - @cf; 
0

你在找这个?

SELECT C.ClearedFunds - P.TotalSales 
FROM (
SELECT SUM(Cf.Amount) AS ClearedFunds 
FROM (
SELECT Amount FROM PAYMENT1 WHERE `Status` = "Cleared" 
UNION ALL 
SELECT Amount FROM PAYMENT2 WHERE `Status` = "Cleared" 
UNION ALL 
SELECT Amount FROM PAYMENT3 WHERE `Status` = "Cleared") AS Cf) C, 
(SELECT SUM(Price) AS TotalSales 
FROM PROPERTY 
WHERE Status = “Sold”) P 
; 
1

你几乎没有......这里的工作SQL

SELECT (SELECT SUM(Cf.Amount) AS ClearedFunds 
FROM (
SELECT Amount FROM PAYMENT1 WHERE `Status` = "Cleared" 
UNION ALL 
SELECT Amount FROM PAYMENT2 WHERE `Status` = "Cleared" 
UNION ALL 
SELECT Amount FROM PAYMENT3 WHERE `Status` = "Cleared") as Cf) 

- (SELECT SUM(Price) AS TotalSales 
FROM PROPERTY 
WHERE Status = "Sold") as Result; 

这里的SQL小提琴,这样就可以用测试数据玩:您的回复,迈克http://sqlfiddle.com/#!2/18677/11