Я хочу удалить строки из переменной таблицы 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
Неверный синтаксис рядом с 'o1'.