Use value of a column for another column (SQL Server)? Use value of a column for another column (SQL Server)? sql sql

Use value of a column for another column (SQL Server)?


If you want to reference a value that's computed in the SELECT clause, you need to move the existing query into a sub-SELECT:

SELECT    /* Other columns */,    ColumnA,    ColumnA + 10 as ColumnBFROM(select table.id, table.number, complex stuff [ColumnA].. from table ...) t

You have to introduce an alias for this table (in the above, t, after the closing bracket) even if you're not going to use it.

(Equivalently - assuming you're using SQL Server 2005 or later - you can move your existing query into a CTE):

;WITH PartialResults as (     select table.id, table.number, complex stuff [ColumnA].. from table ...)SELECT /* other columns */, ColumnA, ColumnA+10 as ColumnB from PartialResults

CTEs tend to look cleaner if you've got multiple levels of partial computations being done, I.e. if you've now got a calculation that depends on ColumnB to include in your query.


Unfortunately, in SQL Server 2016:

SELECT 3 AS a, 6/a AS b;

Error: Invalid column name: 'a'.


You could solve this with a subquery and column aliases.

Here's an example:

SELECT MaxId + 10FROM (SELECT Max(t.Id) As MaxId      FROM SomeTable t) As SomeTableMaxId