2017-08-18 53 views
0

我需要在某些條件下更新多個字段。我知道我的語法是不正確的,但我無法弄清楚什麼是錯的,這應該很容易,但它只是不點擊。請幫忙。使用WHERE更新SQL中的多個字段,然後

UPDATE WO_TASK_LABOR 
SET BILLING_RATE  
    WHEN SYSUR_AUTO_KEY = 577 THEN 26.51 
    WHEN SYSUR_AUTO_KEY = 605 THEN 18.71 
    WHEN SYSUR_AUTO_KEY = 637 THEN 16.84 
    WHEN SYSUR_AUTO_KEY = 741 THEN 16.50 
    WHEN SYSUR_AUTO_KEY = 792 THEN 26.00 
    WHEN SYSUR_AUTO_KEY = 808 THEN 14.99 
    WHEN SYSUR_AUTO_KEY = 812 THEN 24.51 
    WHEN SYSUR_AUTO_KEY = 813 THEN 26.00 
    WHEN SYSUR_AUTO_KEY = 884 THEN 28.00 
    WHEN SYSUR_AUTO_KEY = 768 THEN 21.00 
    WHEN SYSUR_AUTO_KEY = 892 THEN 21.50 
    WHEN SYSUR_AUTO_KEY = 910 THEN 20.50 
    WHEN SYSUR_AUTO_KEY = 920 THEN 22.00 
    WHEN SYSUR_AUTO_KEY = 962 THEN 15.00 
    WHEN SYSUR_AUTO_KEY = 970 THEN 23.00 
    WHEN SYSUR_AUTO_KEY = 971 THEN 56.36 
    WHEN SYSUR_AUTO_KEY = 977 THEN 16.00 
    WHEN SYSUR_AUTO_KEY = 979 THEN 24.00 
    WHEN SYSUR_AUTO_KEY = 982 THEN 20.00 
    WHEN SYSUR_AUTO_KEY = 985 THEN 18.00 
    WHEN SYSUR_AUTO_KEY = 828 THEN 26.50 
    WHEN SYSUR_AUTO_KEY = 834 THEN 23.00  
END 
+0

您還可以添加'那裏sysur_auto_key中(列表)'這樣你就不會穿越wo_task_labor的每個記錄。而只需要那些需要更新的密鑰。 – xQbert

回答

2

你錯過了CASE

UPDATE WO_TASK_LABOR 
    SET BILLING_RATE = 
    CASE 
    WHEN SYSUR_AUTO_KEY = 577 THEN 26.51 
    WHEN SYSUR_AUTO_KEY = 605 THEN 18.71 
    WHEN SYSUR_AUTO_KEY = 637 THEN 16.84 
    WHEN SYSUR_AUTO_KEY = 741 THEN 16.50 
    WHEN SYSUR_AUTO_KEY = 792 THEN 26.00 
    WHEN SYSUR_AUTO_KEY = 808 THEN 14.99 
    WHEN SYSUR_AUTO_KEY = 812 THEN 24.51 
    WHEN SYSUR_AUTO_KEY = 813 THEN 26.00 
    WHEN SYSUR_AUTO_KEY = 884 THEN 28.00 
    WHEN SYSUR_AUTO_KEY = 768 THEN 21.00 
    WHEN SYSUR_AUTO_KEY = 892 THEN 21.50 
    WHEN SYSUR_AUTO_KEY = 910 THEN 20.50 
    WHEN SYSUR_AUTO_KEY = 920 THEN 22.00 
    WHEN SYSUR_AUTO_KEY = 962 THEN 15.00 
    WHEN SYSUR_AUTO_KEY = 970 THEN 23.00 
    WHEN SYSUR_AUTO_KEY = 971 THEN 56.36 
    WHEN SYSUR_AUTO_KEY = 977 THEN 16.00 
    WHEN SYSUR_AUTO_KEY = 979 THEN 24.00 
    WHEN SYSUR_AUTO_KEY = 982 THEN 20.00 
    WHEN SYSUR_AUTO_KEY = 985 THEN 18.00 
    WHEN SYSUR_AUTO_KEY = 828 THEN 26.50 
    WHEN SYSUR_AUTO_KEY = 834 THEN 23.00 
    ELSE 0 
    END 
WHERE ENTRY_DATE >= '01-JUN-17' 
+0

謝謝,這就是它,但我還需要爲所有這些特定記錄添加where條件,即 = '01 -JUN-17'>,我嘗試了幾次不同的迭代,得到語法。任何援助非常感謝。 –

+0

你可以簡單地使用'WHERE'子句。我已經編輯了我的答案,請檢查它。 –

+0

@BrandonPacheco:如果它能幫助你,請接受Ali的答案:-) – zarruq