同じテーブル内の他の行の存在に基づいてSQL Server 2000/2005テーブル変数から行を削除したい(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)
を問題は、私はSQLサーバーがテーブル変数のO1エイリアスを受け入れるように得ることができないということです(と私はエイリアスが原因に必要とされると思いますフィールド名に一致する "o1.Month = o2.Month
")。エラーは次のとおりです。
メッセージ102、レベル15、状態1、行11
付近に正しくない構文 '01'。
うわー、この構文について知らなかった!あなたがイメージを貼り付けなかったら、私はそれを無効として拒否したでしょう。これはSQL2000またはSQL Server 2005でのみ動作しますか?私は今家にいますので、直接確認することはできません。 –
これはSQL 2k/2k5/2k8(スクリーンショットでは2k8でテスト済み)で動作するはずです。 – Sung