2012-12-12 71 views
1

我在Oracle數據庫中有兩個表,我試圖從中構建一個SELECT語句。 第一個表被稱爲「捐贈」幷包含以下屬性: donation_id, donation_date, donor_id, donation_type(有2個選項類型:「接收」或「發送」)需要關於兩個表之間的Oracle SQL SUM聚合函數的建議

第二個表,一個路口表,被稱爲「donation_item」,並具有以下屬性: ITEM_ID, donation_id, LOCATION_ID, 重量

的donation_type,ITEM_ID和重量列其中我特別感興趣的那些我的目標是使用聚合函數(SU M)添加特定donation_type('Incoming')的某個item_id的權重,然後從該答案中減去'Outgoing'donation_type項目的相同item_id的權重。

我已經嘗試了幾個查詢,並且都產生了錯誤。鑑於目前的表格結構,我不確定目標是否可行。一個被試過的代碼示例如下:

SELECT SUM(i.weight) - SUM(o.weight) AS "Total" 
FROM donation_item i JOIN donation_item o 
ON i.item_id = o.item_id JOIN donations d 
ON i.donation_id = d.donation_id 
WHERE i.donation_type <> o.donation_type 
AND i.donation_type = 'Incoming'; 

任何意見是非常感謝。謝謝。

回答

1

這聽起來像你想要的東西,如:

SELECT 
    DONATION_ITEMS.ITEM_ID, 
    SUM 
    (
     CASE DONATIONS.DONATION_TYPE 
      WHEN 'Incoming' THEN 1 
      WHEN 'Outgoing' THEN -1 
     END 
     * 
     DONATION_ITEMS.WEIGHT 
    ) 
FROM 
    DONATIONS 
    INNER JOIN 
    DONATION_ITEMS 
    ON 
    DONATIONS.DONATION_ID = DONATION_ITEMS.DONATION_ID 
GROUP BY 
    DONATION_ITEMS.ITEM_ID 
+0

這似乎這樣的伎倆。謝謝您的幫助! –

0

我想你想

sum(i.weight - o.weight)