2017-03-04 13 views
0

次のselect文は正常に動作します。私はselectサブ内部UPDATEクエリの使用

UPDATE [VoiceflexBilling].[dbo].[FEBU17_OWH07579_Calls - TEST] 
SET [VoiceflexBilling].[dbo].[FEBU17_OWH07579_Calls - TEST].[CustomerCLI] = 

CASE WHEN 

SELECT * 
FROM [VoiceflexBilling].[dbo].[FEBU17_OWH07579_Calls - TEST] A 
WHERE EXISTS (SELECT 1 
       FROM [BillingReferenceData].[dbo].[CLIMapping] B 
       WHERE A.CustomerCLI = B.CLI AND A.CustomerCLI = '84422881'))>1 

THEN 'X' ELSE 'Y' END 

それは

は「一つだけの式が選択リストで指定することができ、次のエラーで失敗し、以下のように、CASE文でそれをラップしかし

SELECT * 
FROM [VoiceflexBilling].[dbo].[FEBU17_OWH07579_Calls - TEST] A 
WHERE EXISTS (SELECT 1 
       FROM [BillingReferenceData].[dbo].[CLIMapping] B 
       WHERE A.CustomerCLI = B.CLI AND A.CustomerCLI = '84422881') 

、ときサブクエリはEXISTSで導入されていません "

+0

私はそれが 'select count(*)'であると推測しています... Select *は結果セットを返し、それをスカラー値と比較しようとします... –

答えて

0

"トップ1 "

UPDATE [VoiceflexBilling].[dbo].[FEBU17_OWH07579_Calls - TEST] 
SET [VoiceflexBilling].[dbo].[FEBU17_OWH07579_Calls - TEST].[CustomerCLI] = 

CASE WHEN 

SELECT top 1 * 
FROM [VoiceflexBilling].[dbo].[FEBU17_OWH07579_Calls - TEST] A 
WHERE EXISTS (SELECT 1 
       FROM [BillingReferenceData].[dbo].[CLIMapping] B 
       WHERE A.CustomerCLI = B.CLI AND A.CustomerCLI = '84422881'))>1 

THEN 'X' ELSE 'Y' END 
0

CustomerCLIの番号を[BillingReferenceData].[dbo].[CLIMapping]テーブルで検索し、XまたはYの値を[VoiceflexBilling].[dbo].[FEBU17_OWH07579_Calls - TEST]テーブルに更新しますか?

SELECT COUNT(1)CASEの文内に使用する必要があります。