una operaciones multiplicar dividir columna cociente sql sql-server calculated-columns

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:

  1. Hacer el + 10 en el código del cliente.
  2. Escriba una función de valor escalar para encapsular la lógica para complex stuff . Se optimizará en una sola llamada.
  3. Copia lógica de complex stuff para la otra columna. Debe ser optimizado en 1 llamada.
  4. Use una sub-selección para aplicar el cálculo adicional