2010-03-16 69 views
0

這一語句將產生一個4列的表的總和:我如何獲得第四列的

SELECT shipped.badguy AS badguy, shipped.sdate AS LineDate, 
     'Delivery' AS Legend, -price*quantity AS amount 
    FROM product JOIN shipped ON (product.id = shipped.product) 
UNION 
    SELECT receipt.badguy, receipt.rdate,notes, amount 
    FROM receipt 

如何獲得上述產生什麼樣的列第4的總和?

+0

哪個數據庫? – 2010-03-16 21:48:25

+0

您的查詢似乎不完整。 – 2010-03-16 21:49:30

回答

1

我喜歡使用子查詢的一切。

SELECT SUM(results.amount) 
FROM 
(
SELECT -price*quantity AS amount 
    FROM product JOIN shipped ON (product.id = shipped.product) 
UNION 
    SELECT amount 
    FROM 
... 
) results 
+0

sql:error每個派生表都必須有自己的別名 number:1248 – 2010-03-16 21:47:48

+0

哦,是的,你需要一個子查詢的別名。我會添加它。 – 2010-03-16 21:56:01

+0

在Oracle中,子查詢表達式不需要別名。 'select count(dummy)from(select * from dual);'是完全有效的。 – 2010-03-16 22:22:53

1
SUM(-price*quantity) 

呵呵?

1

嘗試

sum(price*quantity) 

或兩個查詢合併爲

SELECT badguy,rdate,notes,SUM(AMOUNT) FROM(
     SELECT shipped.badguy AS badguy, shipped.sdate AS LineDate, 
     'Delivery' AS Legend, -price*quantity AS amount 
    FROM product JOIN shipped ON (product.id = shipped.product) 
UNION 
    SELECT receipt.badguy, receipt.rdate,notes, amount 
    FROM) A 
1

將您的查詢包裹在另一個查詢中,其中外部查詢只獲取所需的總和。這使您的查詢子查詢

SELECT SUM(amount) FROM (
    SELECT shipped.badguy AS badguy, shipped.sdate AS LineDate, 
      'Delivery' AS Legend, -price*quantity AS amount 
     FROM product JOIN shipped ON (product.id = shipped.product) 
    UNION 
    SELECT receipt.badguy, receipt.rdate,notes, amount 
    FROM <...> 
)