我有這個選擇查詢返回簡單的表 - 見下文。多連接'gotohell'更新
我花了一整天的時間試圖編寫一個更新聲明,當EQLOC爲NULL或與HOOKNO不一樣時,它應該用HOOKNO更新......但是我失敗了。
請幫忙。
SELECT ho.HOOK_OFFICE_LETTER || LPAD(khc.HOOK_NO, 5, '0') as hookno, eq.location_description as eqloc
FROM KEY_HOOK_CURRENT khc
INNER JOIN KEY_HOLDING kho ON khc.KEY_HOLDINGOID = kho.KEY_HOLDINGOID
INNER JOIN CONTRACT con ON kho.CUSTOMEROID = con.CUSTOMEROID
INNER JOIN VW_CURRENT_CONTRACT_PERIOD ccp ON con.CONTRACT_ID = ccp.CONTRACT_ID
INNER JOIN CONTRACT_PERIOD cp ON (ccp.CONTRACT_ID = cp.CONTRACT_ID AND ccp.CONTRACT_PERIOD = cp.CONTRACT_PERIOD)
INNER JOIN CONTRACT_EQUIP_PERIOD cep ON cp.CONTRACT_PERIODOID = cep.CONTRACT_PERIODOID
INNER JOIN EQUIPMENT eq ON cep.EQUIPMENTOID = eq.EQUIPMENTOID
INNER JOIN HOOK_OFFICE ho ON khc.HOOK_OFFICEOID = ho.HOOK_OFFICEOID
WHERE
eq.PRODUCT_ID = 'XXX' AND
(eq.LOCATION_DESCRIPTION IS NULL OR
ho.HOOK_OFFICE_LETTER || LPAD(khc.HOOK_NO, 5, '0') <> eq.LOCATION_DESCRIPTION)
以下查詢將返回:
HOOKNO EQLOC
G00754 (null)
L02860 (null)
L04052 L12345
L01126 (null)
L01348 (null)
L01950 L56789
L00857 (null)
L04651 (null)
L03762 (null)
所以試過
UPDATE (SELECT ho.HOOK_OFFICE_LETTER || LPAD(khc.HOOK_NO, 5, '0') AS hookey, eq.LOCATION_DESCRIPTION AS eqloc
FROM KEY_HOOK_CURRENT khc
INNER JOIN KEY_HOLDING kho ON khc.KEY_HOLDINGOID = kho.KEY_HOLDINGOID
INNER JOIN CONTRACT con ON kho.CUSTOMEROID = con.CUSTOMEROID
INNER JOIN VW_CURRENT_CONTRACT_PERIOD ccp ON con.CONTRACT_ID = ccp.CONTRACT_ID
INNER JOIN CONTRACT_PERIOD cp ON (ccp.CONTRACT_ID = cp.CONTRACT_ID AND ccp.CONTRACT_PERIOD = cp.CONTRACT_PERIOD)
INNER JOIN CONTRACT_EQUIP_PERIOD cep ON cp.CONTRACT_PERIODOID = cep.CONTRACT_PERIODOID
INNER JOIN EQUIPMENT eq ON cep.EQUIPMENTOID = eq.EQUIPMENTOID
INNER JOIN HOOK_OFFICE ho ON khc.HOOK_OFFICEOID = ho.HOOK_OFFICEOID
WHERE
eq.PRODUCT_ID = 'XXX' AND
(eq.LOCATION_DESCRIPTION IS NULL OR (ho.HOOK_OFFICE_LETTER || LPAD(khc.HOOK_NO, 5, '0')) <> eq.LOCATION_DESCRIPTION))
SET hookno = eqloc
but getting 01733 - "virtual column not allowed"
...和許多其他的查詢,包括合併,但沒有太多的經驗,這麼沒有太大運氣! :(
請注意:此查詢將運行每隔10min 24/7所以它應該是相當快的(如果可能的話),並更新只在必要時
您的幫助,將不勝感激
感謝。!
在這裏,MERGE語句是要走的路,但您需要一些方法來識別設備表中的哪些行需要更新。設備表的主鍵是什麼? – Boneist
設備ID – novacky