0

誰かがの正しい使い方を教えてもらえますかIF EXISTS?このクエリがありますが、IF EXISTS関数に問題があります。

insert into master.dbo.turnover3(shop,somefield)
select '301',Curr_Turnover 
from [S301].vpm.dbo.BO_POS_SAP_Turnover
where datediff(day,left(Sale_Date,16),getdate())= '0' if not exists (select NULL)
4

2 に答える 2

0

の正しい使い方if existsは簡単です。selectupdate、またはSQLステートメントの有効な構文ではありません。あなたのクエリはそれがなくてもうまくいきます:

insert into master.dbo.turnover3(shop,somefield)
    select '301',Curr_Turnover 
    from [S301].vpm.dbo.BO_POS_SAP_Turnover
    where datediff(day,left(Sale_Date,16),getdate())= '0' ;

if exists T-SQL の一部ですつまり、それを使用してスクリプトを作成できます。この構文では、ifステートメントの別のバリエーションにすぎません。

if not exists (select *
               from master.dbo.turnover3(shop,somefield)
               where shop = '301'
              )
begin
    insert into master.dbo.turnover3(shop,somefield)
        select '301',Curr_Turnover 
        from [S301].vpm.dbo.BO_POS_SAP_Turnover
        where datediff(day,left(Sale_Date,16),getdate())= '0' ;
end;
于 2013-03-04T19:42:47.270 に答える
0

ここでは更新を行っていないため (または、else 部分がないため)、レコードの存在を確認する必要はありません。No records found means no records inserted.

insert into master.dbo.turnover3(shop,somefield)
select '301',Curr_Turnover 
from [S301].vpm.dbo.BO_POS_SAP_Turnover
where datediff(day,left(Sale_Date,16),getdate()) = 0 

また、補足として、句left(Sale_Date,16)datediff関数で何をするかわかりません。として使用できるタイプのwhere場合Scale_Datedate/datetimedatediff(day,Sale_Date,getdate()= 0

于 2013-03-04T19:45:45.120 に答える