- Sintaxis
COALESCE ( expression [ ,...n ] )
- Argumentos
expression: Puede ser una expresión de cualquier tipo.
- Tipos de valor devueltos
Devuelve el tipo de datos de expression con la precedencia de tipo de datos más alta.
Nota: Si todos los argumentos son NULL, COALESCE devuelve NULL.
Al menos uno de los valores NULL debe ser NULL con tipo.
COALESCE(expression1,...n) es equivalente a esta función CASE:
CASE
WHEN (expression1 IS NOT NULL) THEN expression1
...
WHEN (expressionN IS NOT NULL) THEN expressionN
ELSE NULL
END
ISNULL y COALESCE, aunque son equivalentes, pueden comportarse de forma diferente.
Una expresión que contenga ISNULL con parámetros diferentes de NULL se considera que es NOT NULL, mientras que las expresiones que contienen COALESCE con parámetros que son diferentes de NULL se consideran NULL.
En este ejemplo, la tabla NBA_TEAM_TICKETS_SOLDS incluye tres columnas con información acerca del precio de entradas vendidas por cada equipo de la NBA.
Para determinar el importe total por cada equipo, utilice la función COALESCE para obtener sólo los valores no NULL encontrados en hourly_wage, price y commission.
CREATE TABLE NBA_TEAM_TICKETS_SOLDS ( party_day_wage number NULL, price number NULL, commission number NULL, num_sales int NULL ); / INSERT NBA_TEAM_TICKETS_SOLDS VALUES(10.00, NULL, NULL, NULL); INSERT NBA_TEAM_TICKETS_SOLDS VALUES(20.00, NULL, NULL, NULL); INSERT NBA_TEAM_TICKETS_SOLDS VALUES(30.00, NULL, NULL, NULL); INSERT NBA_TEAM_TICKETS_SOLDS VALUES(40.00, NULL, NULL, NULL); INSERT NBA_TEAM_TICKETS_SOLDS VALUES(NULL, 10000.00, NULL, NULL); INSERT NBA_TEAM_TICKETS_SOLDS VALUES(NULL, 20000.00, NULL, NULL); INSERT NBA_TEAM_TICKETS_SOLDS VALUES(NULL, 30000.00, NULL, NULL); INSERT NBA_TEAM_TICKETS_SOLDS VALUES(NULL, 40000.00, NULL, NULL); INSERT NBA_TEAM_TICKETS_SOLDS VALUES(NULL, NULL, 15000, 3); INSERT NBA_TEAM_TICKETS_SOLDS VALUES(NULL, NULL, 25000, 2); INSERT NBA_TEAM_TICKETS_SOLDS VALUES(NULL, NULL, 20000, 6); INSERT NBA_TEAM_TICKETS_SOLDS VALUES(NULL, NULL, 14000, 4); / SELECT CAST(COALESCE(party_day_wage * 40 * 52, price, commission * num_sales) AS money) AS 'Total sales' FROM NBA_TEAM_TICKETS_SOLDS; / Total Sales ------------ 20800.0000 41600.0000 62400.0000 83200.0000 10000.0000 20000.0000 30000.0000 40000.0000 45000.0000 50000.0000 120000.0000
No hay comentarios:
Publicar un comentario
Por favor deja tu comentario, es valioso.