2014-05-06 87 views
0

使用以下選擇並希望進行更新,但發現語法有點混亂,在Microsoft SQL中更容易!Oracle更新根據選擇加入

select是下面的,我想要做的是根據這個選擇c.allow_to_trade ='Y'到'N'以及其餘條件的任何東西。

SELECT MAX(Trade_date) "TRADE DATE", 
    t.client, 
    c.shortened_name, 
    c.allow_to_trade "ACTIVE", 
    C.GCD_NUMBER 
FROM lib.trades t , 
    lib.client_address c 
WHERE t.client  = c.client 
AND c.allow_to_trade = 'Y' 
GROUP BY C.GCD_NUMBER, 
    t.client, 
    c.shortened_name, 
    c.allow_to_trade 
HAVING MAX(trade_date) < '01-may-2012' 

在此先感謝

+1

這是不是很清楚你想要做什麼。你的查詢給出了一個聚合數據,所以你不能更新它。你想更新這個查詢返回的所有客戶端嗎? – Guneli

+0

是的 - 任何由該查詢返回的東西我想將allow_to_trade設置爲'N' – user491119

回答

0

能,你,請試試這個:

UPDATE lib.client_address 
SET allow_to_trade='N' 
WHERE client IN 
    (SELECT t.client 
    FROM lib.trades t , 
    lib.client_address c 
    WHERE t.client  = c.client 
    AND c.allow_to_trade = 'Y' 
    GROUP BY C.GCD_NUMBER, 
    t.client, 
    c.shortened_name, 
    c.allow_to_trade 
    HAVING MAX(trade_date) < '01-may-2012' 
); 
+0

在我將client_address更改爲lib.client_address之後,它就起作用了!謝謝 – user491119

+0

不客氣!你的表名是地址還是client_address? – Guneli

+0

編輯答案。 – Guneli