2017-04-04 7 views
0

私はsql serverで新たなんだと、このコードを書く、その目的のためにテーブルに結果を除いて挿入しよう:
結果をテーブルに保存するにはどうしたらよいですか?

insert into [tablediff].[dbo].[TempTable] 
    select [Phone] from [dbo].[CRMSubscriber] 
    except 
    select [Phone] from [dbo].[BillingSubscriber] 


そのコードの仕事は非常に良いが、私はこのコードを実行しようとすると:

Msg 156, Level 15, State 1, Line 3 Incorrect syntax near the keyword 'insert'.

Msg 102, Level 15, State 1, Line 7 Incorrect syntax near ')'.

Msg 156, Level 15, State 1, Line 11 Incorrect syntax near the keyword 'else'.

use [tablediff] 
if (not exists(
    insert into [tablediff].[dbo].[TempTable] 
    select [Phone] from [dbo].[CRMSubscriber] 
    except 
    select [Phone] from [dbo].[BillingSubscriber] 
)) 
begin 
    print 'no record' 
end 
else 
begin 
    print 'has record' 
end 


このエラーが出ます

どうすれば問題を解決できますか?ありがとう。

+0

発明を... – Shnugo

+0

@ Shnugo私の問題に注意を払うために私の友人に感謝、私はどのような差異のソースと宛先テーブルまたはより多くのexmplainどのCRMテーブルに記録すると課金テーブルではない –

+0

'OUTPUT'句永続的な変更リスト...または '@@ ROWCOUNT'を使用して、最後のアクションの影響を受ける行の数を取得できます。 – Shnugo

答えて

2

@@rowcount変数が必要です。これは、最後の操作で影響を受けた行(挿入、更新、または削除)の数を示します。私はそれはあなたが再しようとしているもの[MERGE](https://docs.microsoft.com/en-us/sql/t-sql/statements/merge-transact-sql)であることを考える

use [tablediff] 

insert into [tablediff].[dbo].[TempTable] 
select [Phone] from [dbo].[CRMSubscriber] 
except 
select [Phone] from [dbo].[BillingSubscriber] 

if @@ROWCOUNT = 0 
begin 
    print 'no record' 
end 
else 
begin 
    print 'has record' 
end 
+0

非常に良い、ありがとう –

+0

5分後に答えを受け入れる –

関連する問題