Los campos calculados en una consulta son campos que se construyen en base a los existentes en la tabla.
Los campos calculados siguen cualquiera de los formatos siguientes:
NombreCampoCalculado = Expresión que lo calcula
o Expresión que lo calcula As ‘Nombre de campo calculado’
Si el nombre del campo calculado incluye espacios se debe encerrar entre
corchetes.
Ejercicios Como usar campos calculados en consultas SQL Server Usando Northwind use Northwind go
1. El código del empleado y su nombre completo (el nombre completo no
existe en la tabla)
select E.EmployeeID As ‘Código’,
Empleado = E.LastName + Space(1) + E.FirstName from Employees As E go — Otra forma select E.EmployeeID As ‘Código’, E.LastName + Space(1) + E.FirstName As ‘Empleado’ from Employees As E go
2. Empleado y su edad (en la tabla hay fecha de nacimiento)
select E.EmployeeID As ‘Código’,
E.LastName + Space(1) + E.FirstName As ‘Empleado’, Edad = Datediff(yy,E.BirthDate,GetDate()) from Employees As E go En la instrucción anterior se muestran los dos formatos de como presentar campos calculados, el campo Empleado primero con la expresión que lo calcula seguido de As y la Edad con el nombre de campo igualado a la expresión que lo calcula. 3. Los productos y el valor del Stock (Precio * Stock)
select P.ProductName As ‘Producto’, P.ProductID As ‘Código’,
[Valor del Stock] = P.UnitPrice * P.UnitsInStock, P.UnitPrice As ‘Precio’, P.UnitsInStock As ‘Stock’ from Products As P go 4. Productos y las unidades de compra urgente. Existen unidades para comprar urgente cuando el stock es menor a las unidades en orden
select P.ProductID As ‘Código’,P.ProductName As ‘Producto’,
P.UnitsInStock As ‘Stock’, P.UnitsOnOrder As ‘En Orden’, [Por comprar] = iif(P.UnitsOnOrder > P.UnitsInStock,P.UnitsOnOrder – P.UnitsInStock,0) from Products As P where P.UnitsOnOrder > P.UnitsInStock go 5. Las órdenes, el monto total de la misma y el impuesto, suponiedo que se trate de un 12%.
select O.OrderID As ‘Nº Orden’,
Format(O.OrderDate,’dd/MM/yy’) As ‘Fecha de Orden’, Format(Sum(D.Quantity * D.UnitPrice),’##,##0.00′) as ‘Monto’, Impuesto = Format(Sum(D.Quantity * D.UnitPrice)* 0.12,’##,##0.00′) from Orders As O join [Order Details] As D on O.OrderID = D.OrderID Group by O.OrderID, O.OrderDate go
Se uso la tabla detalle para calcular el monto total de la orden. Ver Joins
Se utilizó agrupamientos. Ver Agrupamientos
Notas Puede incluirse la cantidad de campos calculados que se necesite, estos siempre se calculan en base a los campos existentes en la tabla. Es recomendable para optimizar el trabajo de las consultas, incluir en las tablas los campos calculados que se usan con frecuencia. Se recomienda crear vistas para las consultas con campos calculados de uso frecuente.