Я хочу удалить строки из табличной переменной 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)
Проблема в том, что я не могу заставить сервер SQL принимать псевдоним o1 табличной переменной (и я думаю, что псевдоним необходим из-за "o1.Month = o2.Month
" совпадающих имен полей). Ошибка:
Сообщение 102, Уровень 15, Состояние 1, Строка 11
Неверный синтаксис рядом с 'o1'.