-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)の表の例では、値が「Disconnect」の一致するすべての電話番号(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

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 に答える
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 に答える