1

在 CTE 构造中,我想知道是否有一种方法可以根据主查询中的字段值在 CTE 定义中的字段和主查询中的字段之间乘以不同的字段?

例如,在 CTE 构造中有Width1Width2字段。在主查询中有Height1,Height2DIM_Type

是否可以分别从ifResult1和from if获得两个计算字段?Result2Width1 * Height1DIM_Type = 1Width2 * Height2DIM_Type = 2

4

2 回答 2

3
select case 
    when DIM_Type = 1 then Width1 * Height1
    else  Width2 * Height2
end CalculatedField
from cte
于 2013-09-29T01:54:14.933 回答
1

我做了一个小提琴,它或多或少与上面相同: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
于 2013-09-29T01:58:33.613 回答