Quiero eliminar filas de una variable de tabla de SQL Server 2000/2005 en función de la presencia de otras filas en la misma tabla (eliminar todas las filas de 0 count si no cuenta 0 fila existe con la misma fecha). Aquí está un ejemplo simplificado que sólo debe eliminar la fila añade en primer lugar:Variables de tabla con un alias en una instrucción Delete From
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)
El problema es que no puedo conseguir el servidor SQL para aceptar alias o1 de la variable de tabla (y creo que se requiere un alias, debido a la "o1.Month = o2.Month
" nombres de campos coincidentes). El error es:
Msg 102, nivel 15, estado 1, línea 11
sintaxis incorrecta cerca de 'O1'.
¡Vaya, no sabía acerca de esta sintaxis! Si no hubiera pegado la imagen, la hubiera rechazado como inválida. ¿Funciona esto en SQL2000 o solo en SQL Server 2005? Estoy en casa ahora mismo, así que no puedo verificarlo directamente. –
Debería funcionar en SQL 2k/2k5/2k8 (se probó en 2k8 en la captura de pantalla) - Nunca se trató con SQL 7, por lo que no estoy seguro de 7 – Sung