在 CTE 构造中,我想知道是否有一种方法可以根据主查询中的字段值在 CTE 定义中的字段和主查询中的字段之间乘以不同的字段?
例如,在 CTE 构造中有Width1
和Width2
字段。在主查询中有Height1
,Height2
和DIM_Type
是否可以分别从ifResult1
和from if获得两个计算字段?Result2
Width1 * Height1
DIM_Type = 1
Width2 * Height2
DIM_Type = 2
select case
when DIM_Type = 1 then Width1 * Height1
else Width2 * Height2
end CalculatedField
from cte
我做了一个小提琴,它或多或少与上面相同:http : //sqlfiddle.com/#!6/d24e7/10 您需要分别使用包含 height1 和 heigh2 的列更改 111 和 222
with propCte as (
select
width1,
width2,
dim_type
from
props
)
select
case dim_type
when 2 then propCte.width1 * 111
else propCte.width2 * 222
end as computed
from
propCte