-1

我有下表:

Destination     Last Result
(555) 319-5170  Disconnect
(555) 319-5170  Duplicate
(555) 319-5170  Duplicate
(555) 261-5000  Duplicate
(555) 261-5000  Duplicate
(555) 261-7325  Busy
(555) 261-7325  Duplicate

我想查找所有重复项Destination(Phone numbers)并更新所有匹配电话号码的“最后结果”列,其值不等于“重复”。因此,在上面的 Destination((555) 319-5170) 示例表中,所有匹配电话号码 (555) 319-5170) 的结果为“断开连接”。我的查询如下,但出现错误。

update Call
set [last result] = (
select [last result] 
from Call
 WHERE Destination in (select destination from Call group by destination having count(*)>1) and [Last result] != 'Duplicate' and [Last result] != 'No Phone #')
 WHERE Destination in (select destination from Call group by destination having count(*)>1) and [Last result] != 'Duplicate' and [Last result] != 'No Phone #'

Destination     Last Result - EXPECTED OUTPUT
(555) 319-5170  Disconnect
(555) 319-5170  Disconnect
(555) 319-5170  Disconnect
(555) 261-5000  Duplicate
(555) 261-5000  Duplicate
(555) 261-7325  Busy
(555) 261-7325  Busy

提前感谢您提供可能的解决方案的任何帮助。

4

2 回答 2

0

您的子查询返回多个结果,这就是您遇到异常的原因。

这个查询应该对你有用(如果我正确理解了你的标准):

UPDATE C
SET [Last Result] = 'Disconnect'
FROM Call C
INNER JOIN
        (
            SELECT Destination
            FROM Call
            WHERE [Last Result] NOT IN ('Duplicate','No Phone #')
            GROUP BY Destination
            HAVING COUNT(*) > 1
        ) Dup ON Dup.Destination = C.Destination
WHERE C.[Last Result] NOT IN ('Duplicate','No Phone #')
于 2013-02-07T15:06:58.967 回答
0

我正在对 JBond312 的回答做一个小改动,

UPDATE C
SET [Last Result] = 'Disconnect'
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 #')
于 2013-02-07T15:23:33.893 回答