同じテーブル内の他の行の存在に基づいて、SQL Server 2000/2005 テーブル変数から行を削除したい (同じ日付で 0 カウント以外の行が存在する場合は、0 カウント行をすべて削除する)。最初に追加された行のみを削除する簡単な例を次に示します。
declare @O table (
Month datetime,
ACount int NULL
)
insert into @O values ('2009-01-01', 0)
insert into @O values ('2009-01-01', 1)
insert into @O values ('2008-01-01', 1)
insert into @O values ('2007-01-01', 0)
delete from @O o1
where ACount = 0
and exists (select Month from @O o2 where o1.Month = o2.Month and o2.ACount > 0)
o1.Month = o2.Month
問題は、テーブル変数の o1 エイリアスを SQL サーバーに受け入れさせることができないことです (フィールド名が " " 一致するため、エイリアスが必要だと思います)。エラーは次のとおりです。
メッセージ 102、レベル 15、状態 1、行 11
'o1' 付近の構文が正しくありません。