gra*_*ady 16 sql sql-server calculated-columns
假设我在某张桌子上有很大的选择.使用复数logc计算列的一个值,并将其称为ColumnA.现在,对于另一列,我需要来自ColumnA的值并向其添加一些其他静态值.
示例SQL:
select table.id, table.number, complex stuff [ColumnA], [ColumnA] + 10 .. from table ...
Run Code Online (Sandbox Code Playgroud)
在[ColumnA] + 10是什么即时寻找.复杂的东西是一个巨大的案例/何时阻止.
想法?
Dam*_*ver 19
如果要引用在SELECT子句中计算的值,则需要将现有查询移动到子SELECT中:
SELECT
/* Other columns */,
ColumnA,
ColumnA + 10 as ColumnB
FROM
(select table.id, table.number, complex stuff [ColumnA].. from table ...
) t
Run Code Online (Sandbox Code Playgroud)
你必须为这个表引入一个别名(在上面t,在结束括号之后),即使你不打算使用它.
(等效 - 假设您使用的是SQL Server 2005或更高版本 - 您可以将现有查询移动到CTE中):
;WITH PartialResults as (
select table.id, table.number, complex stuff [ColumnA].. from table ...
)
SELECT /* other columns */, ColumnA, ColumnA+10 as ColumnB from PartialResults
Run Code Online (Sandbox Code Playgroud)
如果你已经完成了多个级别的部分计算,那么CTE往往看起来更干净,即如果你现在有一个依赖于ColumnB的计算要包含在你的查询中.
| 归档时间: |
|
| 查看次数: |
25707 次 |
| 最近记录: |