Я хочу удалить строки из табличной переменной 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
" соответствующие имена полей). Ошибка:
Msg 102, Level 15, State 1, Line 11
Неправильный синтаксис около 'o1'.
Wow, не знал об этом синтаксисе! Если бы вы не вставили изображение, я бы отклонил его как недействительный. Это работает на SQL2000 или только на SQL Server 2005? Я сейчас дома, поэтому я не могу подтвердить это напрямую. –
Он должен работать на SQL 2k/2k5/2k8 (он был протестирован на 2k8 на скриншоте) - Никогда не занимался SQL 7, поэтому не был уверен в 7 – Sung