Chcę usunąć wiersze ze zmiennej tabelowej SQL Server 2000/2005 na podstawie obecności innych wierszy w tej samej tabeli (usunąć wszystkie wiersze zliczania 0, jeśli nie ma zliczeń 0; wiersz istnieje z tą samą datą). Oto uproszczony przykład, że należy usuwać tylko wiersz najpierw dodaje:Zmienne tabelowe z aliasem w instrukcji usuwania z kolekcji
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)
Problem polega na tym, że nie mogę dostać serwera SQL do zaakceptowania zmiennej stołu o1 aliasu (i myślę, że alias jest wymagana ze względu na "o1.Month = o2.Month
" pasujące nazwy pól). Błąd jest:
Msg 102, Level 15, State 1, wiersz 11
Niepoprawna składnia w pobliżu 'O1'.
Wow, nie wiedziałem o tej składni! Gdyby nie wkleiłeś obrazu, odrzuciłbym go jako nieważny. Czy to działa na SQL2000 lub tylko na SQL Server 2005? Jestem teraz w domu, więc nie mogę bezpośrednio zweryfikować. –
Powinien działać na SQL 2k/2k5/2k8 (testowano go na 2k8 na zrzucie ekranu) - Nigdy nie zajmowałem się SQL 7, więc nie jestem pewien 7 – Sung