Desidero eliminare le righe da una variabile di tabella di SQL Server 2000/2005 in base alla presenza di altre righe nella stessa tabella (eliminare tutte le righe di conteggio 0 se un conteggio non 0 la riga esiste con la stessa data). Ecco un esempio semplificato che dovrebbe eliminare solo la riga aggiunta per prima:Variabili tabella con un alias in un'istruzione Elimina da
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)
Il problema è che non riesco a SQL server per accettare alias o1 della variabile di tabella (e penso che un alias è necessaria a causa della "o1.Month = o2.Month
" corrispondenti ai nomi dei campi). L'errore è:
Msg 102, livello 15, stato 1, riga 11
la sintassi non corretta in prossimità 'o1'.
Wow, non sapevo su questa sintassi! Se non avessi incollato l'immagine, l'avrei rifiutata come non valida. Funziona su SQL2000 o solo su SQL Server 2005? Sono a casa ora, quindi non posso verificare direttamente. –
Dovrebbe funzionare su SQL 2k/2k5/2k8 (è stato testato su 2k8 sullo screenshot) - Non ha mai avuto a che fare con SQL 7 quindi non sono sicuro di 7 – Sung