Compartir vía


ALL (Transact-SQL)

Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance

Compara un valor escalar con un conjunto de valores de una sola columna.

Convenciones de sintaxis de Transact-SQL

Sintaxis

scalar_expression { = | <> | != | > | >= | !> | < | <= | !< } ALL ( subquery )  

Argumentos

scalar_expression
Es cualquier expresión válida.

{ = | <> | != | > | >= | !> | < | <= | !< }
Es un operador de comparación.

subquery
Es una subconsulta que devuelve un conjunto de resultados de una columna. El tipo de datos de la columna devuelta debe ser igual que el tipo de datos de scalar_expression.

Es una instrucción SELECT restringida en la que no se permiten la cláusula ORDER BY ni la palabra clave INTO.

Tipos de resultado

Boolean

Valor del resultado

Devuelve TRUE cuando la comparación especificada es TRUE para todos los pares (scalar_expression, x), donde x es un valor del conjunto de una sola columna. De lo contrario, devuelve FALSE.

Observaciones

ALL requiere que scalar_expression se compare de forma positiva con cada valor devuelto por la subconsulta. Por ejemplo, si la subconsulta devuelve los valores 2 y 3, scalar_expression<= ALL (subconsulta) se evaluaría como TRUE para una scalar_expression de 2. Si la subconsulta devuelve los valores 2 y 3, scalar_expression = ALL (subconsulta) se evaluaría como FALSE, porque algunos de los valores de la subconsulta (el valor 3) no cumplirían los criterios de la expresión.

Para instrucciones que requieren que scalar_expression se compare de forma positiva con solo un valor devuelto por la subconsulta, consulte SOME | ANY (Transact-SQL).

Para comparar la igualdad de dos expresiones y garantizar un resultado verdadero o falso, consulte IS [NOT] DISTINCT FROM (Transact-SQL).

Este artículo hace referencia a ALL cuando se utiliza con una subconsulta. ALL también se puede usar con UNION y SELECT.

Ejemplos

En el ejemplo siguiente se crea un procedimiento almacenado que determina si todos los componentes de un objeto SalesOrderID especificado en la base de datos AdventureWorks2022 se pueden fabricar en el número de días especificado. En el ejemplo se usa una subconsulta para crear una lista del número del valor de DaysToManufacture para todos los componentes del SalesOrderID específico y, a continuación, confirma que todos los DaysToManufacture están dentro del número de días especificado.

-- Uses AdventureWorks

CREATE PROCEDURE DaysToBuild @OrderID INT, @NumberOfDays INT  
AS  
IF   
@NumberOfDays >= ALL  
   (  
    SELECT DaysToManufacture  
    FROM Sales.SalesOrderDetail  
    JOIN Production.Product   
    ON Sales.SalesOrderDetail.ProductID = Production.Product.ProductID   
    WHERE SalesOrderID = @OrderID  
   )  
PRINT 'All items for this order can be manufactured in specified number of days or less.'  
ELSE   
PRINT 'Some items for this order can''t be manufactured in specified number of days or less.' ;  

Para probar el procedimiento, ejecútelo con SalesOrderID 49080, que tiene un componente que requiere 2 días y dos componentes que requieren 0 días. La primera instrucción que se indica a continuación cumple los criterios. La segunda consulta no.

EXECUTE DaysToBuild 49080, 2 ;  

Este es el conjunto de resultados.

All items for this order can be manufactured in specified number of days or less.

EXECUTE DaysToBuild 49080, 1 ;  

Este es el conjunto de resultados.

Some items for this order can't be manufactured in specified number of days or less.

Consulte también