uso usar los funcionan ejemplos como columna agregar sql sql-server alias

sql - usar - Variables de tabla con un alias en una instrucción Delete From



usar alias en where sql (2)

Especifique el nombre de alias antes de la instrucción FROM Significado, está eliminando de la tabla con alias.

delete o1 from @O as o1 where ACount = 0 and exists ( select Month from @O o2 where o1.Month = o2.Month and o2.ACount > 0)


Resultado

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 recuentos si existe una fila que no tiene 0 con la misma fecha). Aquí hay un ejemplo simplificado que solo debería eliminar la fila agregada primero:

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 hacer que SQL Server acepte el alias o1 de la variable de tabla (y creo que se necesita un alias debido a los nombres de campo coincidentes " o1.Month = o2.Month "). El error es:

Msg 102, nivel 15, estado 1, línea 11

Sintaxis incorrecta cerca de ''o1''.


Intenta esto, debería funcionar (la primera FROM es opcional):

DELETE [FROM] @O FROM @O o1 where ACount = 0 and exists (select Month from @O o2 where o1.Month = o2.Month and o2.ACount > 0)

El razonamiento es: DELETE, como se explica here , espera primero una tabla sin alias, un FROM opcional puede precederla. Después de eso puedes poner un alias en una tabla en el segundo FROM, si necesitas hacer un JOIN, una subconsulta, etc.