operaciones - ¿Usar el valor de una columna para otra columna(SQL Server)?
multiplicar una columna sql (3)
Podría resolver esto con una subconsulta y alias de columna .
Aquí hay un ejemplo:
SELECT MaxId + 10
FROM (SELECT Max(t.Id) As MaxId
FROM SomeTable t) As SomeTableMaxId
Digamos que tengo una gran selección en una tabla determinada. Un valor para una columna se calcula con logc complejo y se llama ColumnA . Ahora, para otra columna, necesito el valor de ColumnA y le agrego algún otro valor estático.
Ejemplo de SQL:
select table.id, table.number, complex stuff [ColumnA], [ColumnA] + 10 .. from table ...
La [Columna A] + 10 es lo que estoy buscando. Lo complejo es un caso enorme / cuando bloque.
Ideas?
Si desea hacer referencia a un valor que se calcula en la cláusula SELECT
, debe mover la consulta existente a un sub-SELECT:
SELECT
/* Other columns */,
ColumnA,
ColumnA + 10 as ColumnB
FROM
(select table.id, table.number, complex stuff [ColumnA].. from table ...
) t
Debe introducir un alias para esta tabla (en la anterior, t
, después del corchete de cierre) incluso si no lo va a utilizar.
(De forma equivalente, suponiendo que esté utilizando SQL Server 2005 o posterior, puede mover su consulta existente a un CTE):
;WITH PartialResults as (
select table.id, table.number, complex stuff [ColumnA].. from table ...
)
SELECT /* other columns */, ColumnA, ColumnA+10 as ColumnB from PartialResults
Los CTE tienden a verse más limpios si se realizan múltiples niveles de cálculos parciales, es decir, si ahora tiene un cálculo que depende de ColumnB para incluir en su consulta.
Tú podrías:
- Hacer el
+ 10
en el código del cliente. - Escriba una función de valor escalar para encapsular la lógica para
complex stuff
. Se optimizará en una sola llamada. - Copia lógica de
complex stuff
para la otra columna. Debe ser optimizado en 1 llamada. - Use una sub-selección para aplicar el cálculo adicional