2009-10-30 190 views
0

下午好,在存儲過程中SQL Server 2005外部連接問題

我在SQL Server 2005 DB,Main和MSDRGWEIGHTS中有兩個表。我想創建一個存儲過程,使用來自MSDRGWEIGHTS的適當值更新Main.RelWeight。我寫了下面的代碼作爲存儲過程的一部分:

UPDATE MAIN 
left outer join MSDRGWEIGHTS AS W ON MAIN.MSDRG=W.MSDRG 
SET M.RELWEIGHT = 
CASE 
WHEN M.DISCHARGEDATE BETWEEN 20071001 AND 20080930 THEN W.WEIGHTSOCT07 
WHEN M.DISCHARGEDATE BETWEEN 20081001 AND 20090930 THEN W.WEIGHTSOCT08 
END 
END 
GO 

當我執行這個代碼,我收到錯誤消息,指出近關鍵字左邊不正確的語法。 任何人都可以建議使用存儲過程更新RELWEIGHT的正確方法?或者,這是否超出了sproc的範圍?

感謝, 希德

+0

當您運行完全一樣的SQL會發生什麼(減去最後的結束和GO,當然)在SSMS? – 2009-10-30 19:43:32

+0

我個人不喜歡用OUTER這個詞來查看查詢。 – JonH 2009-10-30 19:44:51

+0

ack,healthcare .... – 2009-10-30 20:41:10

回答

4
UPDATE 
      m 
    SET m.RELWEIGHT= CASE 
         WHEN M.DISCHARGEDATE BETWEEN 20071001 AND 20080930 THEN W.WEIGHTSOCT07WHEN 
         WHEN M.DISCHARGEDATE BETWEEN 20081001 AND 20090930 THEN W.WEIGHTSOCT08 
    END 
    FROM 
      MAIN m 
    INNER JOIN MSDRGWEIGHTS mw 
    ON 
    mw.MSDRG = m.MSDRG 
+0

請注意,內部連接只會更新mw表中實際具有值的那些行。真的,這是可能的,除非你想設置一個現有的值爲null,如果沒有匹配。 – HLGEM 2009-10-30 20:05:11

+0

這工作完美!非常感謝:) – SidC 2009-10-30 20:10:53