lunes, 18 de septiembre de 2017

TSQL - Creando un Campo Calculado en Nuestra Consulta (SELECT) - Data Mining

Hola, hoy vamos a construir campos calculados en nuestra consulta. Pongámonos en marcha abriendo nuestro SQL Server Management Studio y recordando la consulta con la que venimos trabajando en los últimos posts:


Vamos a incluir un nuevo campo que contiene las unidades facturadas y le vamos a agregar un alias para facilitar la lectura:



Y con el campo facturación y unidades, vamos a construir nuestro campo calculado de la siguiente forma, solo para el ejemplo, vamos a retirar los valores cuyas unidades aparecen en cero, con un filtro adicional:




Hay que tener en cuenta que si no aplicamos el filtro para retirar los ceros, se producirá el error matemático de división por cero.

Ahora veamos otro ejemplo de campo calculado, en el que vamos a suponer que a toda nuestra facturación bruta siempre le aplicamos un descuento del 20% y lo queremos calcular:


Y si quisiéramos que nuestro campo calculado aplicara un 20% para Colombia y un 10% para Ecuador ¿Cómo lo haríamos? Para resolver esta necesidad, vamos a utilizar la sentencia CASE - WHEN, que es un poco más avanzada y que es propia de TSQL (es decir no hace parte del estandar):




Como ven, ahora nuestra consulta le aplica el descuento deseado a cada uno de los países.

Este es el código fuente:


Código
USE MercadeoGlobal;
--En esta parte de la consulta seleccionamos los campos de nuestro interes
SELECT FAC_FECHA AS Fecha, PAI_NOMBRE AS País, FAC_TIP_CLIENTE AS 'Tipo Cliente',
CASE PAI_NOMBRE
WHEN 'Colombia' THEN FAC_VAL_FAC_BRU_MON_LOCAL*0.2
WHEN 'Ecuador' THEN FAC_VAL_FAC_BRU_MON_LOCAL*0.1
END AS Descuento,
FAC_VAL_FAC_BRU_MON_LOCAL AS [Facturación Bruta], FAC_UNI_BRUTAS AS [Unidades Brutas],
(FAC_VAL_FAC_BRU_MON_LOCAL/FAC_UNI_BRUTAS) AS [Precio Bruto]
--En esta parte, vamos a indicar la tabla de donde se va a realizar la extracción
FROM dbo.FACTURACION
--En esta parte, vamos a aplicar uno o varios filtros a nuestra consulta
WHERE PAI_NOMBRE IN ('Ecuador', 'Colombia') AND FAC_FECHA='20160115' AND FAC_UNI_BRUTAS > 0;

Espero les sirva. Hasta una próxima.

No hay comentarios.:

Publicar un comentario