我看到了一些近似的答案,但我無法將它們放入我的場景中。更新使用WITH CLAUSE
我在PL/SQL(的Oracle 11g)如下: (編輯:我清理SQL一點使它右)
WITH t AS
(
SELECT case_nbr,
type_cd,
subtype_cd,
class_nbr,
case_dt,
SUM(fhits) fhits_sum,
COUNT(fhits) hit_count
FROM DDEL.MYCASE
GROUP BY case_nbr,
type_cd,
subtype_cd,
class_nbr,
case_dt
)
SELECT ROUND(mc.fhits/t.fhits_sum * mc.qty) new_qty , t.*, mc.fhits, mc.qty
FROM t
JOIN DDEL.MYCASE mc
ON t.case_nbr = mc.case_nbr
AND t.type_cd = mc.type_cd
AND t.subtype_cd = mc.subtype_cd
AND t.class_nbr = mc.class_nbr
AND t.case_dt = mc.case_dt
WHERE t.fhits_sum > 1000
AND t.hit_count > 1
);
結果給我(我只是編號無關列,使其更適合):
new_qty 1 2 3 4 5 6 fhits qty
57 10 E S 8 01-DEC-15 133 2 999 77
20 10 E S 8 01-DEC-15 133 2 934 77
這找工作......但是,我想要做的就是更新該查詢在這種情況下,結果...兩個記錄。我想用new_qty(你會看到57和20)修改mc.qty列(你看77的地方)。
我很難得到一個更新使用WITH子句和這個結果集。我想我必須做更復雜的事情,但希望有人可以在這裏看到一個簡單的方法來添加更新。請記住,查詢正在查找一組具有大量數據的不同記錄,這些記錄匹配的次數不止一次,並且符合以下條件:一起使fhits列的總和超過1000的值...只有那麼我想要做到這一點。
我剛剛在這最後一天半的時間裏看了太久,我錯過了一些明顯的東西。感謝您的幫助
感謝那些運作良好。至於Distinct和Outer Join,你是對的......它通過多次交換我的代碼試圖讓它與更新一起工作。在發佈之前,我應該清理它。如果有人想要使用那裏的什麼,我會將其修正爲其他人 – Mark