我有以下SQL Server 2008表:動態SQL更新
ID Destination Last Result 01 (555) 319-5170 Disconnect 02 (555) 319-5170 Duplicate 03 (555) 319-5170 Duplicate 04 (555) 261-5000 Duplicate 05 (555) 261-5000 Duplicate 06 (555) 261-7325 Busy 07 (555) 261-7325 Duplicate 08 (555) 261-7345 No Answer 09 (555) 261-7345 Duplicate
我的目標是動態設置「最後結果」列所有匹配的電話號碼。因此,在上述目的地((555)319-5170)的示例表中,所有匹配電話號碼(555)319-5170)的結果的值爲「斷開」。樣品更新語句低於:
UPDATE C SET [Last Result] = ( SELECT Destination FROM Call WHERE [Last Result] NOT IN ('Duplicate','No Phone #') GROUP BY Destination HAVING COUNT(Destination) > 1) FROM Call C INNER JOIN ( SELECT Destination FROM Call WHERE [Last Result] NOT IN ('Duplicate','No Phone #') GROUP BY Destination HAVING COUNT(Destination) > 1 ) Dup ON Dup.Destination = C.Destination WHERE C.[Last Result] NOT IN ('Duplicate','No Phone #')
但我得到一個錯誤:事先與可能的解決方案的任何援助
Msg 512, Level 16, State 1, Line 1
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
**EXPECTED OUTPUT**: ID Destination Last Result 01 (555) 319-5170 Disconnect 02 (555) 319-5170 Disconnect 03 (555) 319-5170 Disconnect 04 (555) 261-5000 Duplicate 05 (555) 261-5000 Duplicate 06 (555) 261-7325 Busy 07 (555) 261-7325 Busy 08 (555) 261-7345 No Answer 09 (555) 261-7345 No Answer
感謝。
表中的主鍵是什麼? – 2013-02-12 15:19:38
桌子上是否有標識欄?看起來你想填補最後的結果來掩蓋「重複」記錄。如果一個數字有'Disconnect','Duplicate','No Answer','Duplicate',你想要結果是什麼? '斷開','斷開','沒有答案','沒有答案'?或者他們都應該'斷開'?是否有可能有不同的非重複的[最後結果]值與相同的數字相關聯? – 2013-02-12 15:23:48
您的錯誤是由SET命令上的子查詢可能返回多個結果引起的。您有[最後結果]不在('重複','沒有電話號碼'),但您的示例數據顯示了更多可能的選項。 – 2013-02-12 15:25:07