对不同的SQL别名使用相同的计算

对不同的SQL别名使用相同的计算,sql,alias,Sql,Alias,因此,我有两个列别名使用相同的计算: ,bi.PolicyFeeFactor=0时的情况 然后0 其他的 CAST(四舍五入(注:年政策*双政策系数,2)为十进制(6,2)) 结束 作为一个单位_POLFEE_Y ,bi.PolicyFeeFactor=0时的情况 然后0 其他的 CAST(四舍五入(注:年政策*双政策系数,2)为十进制(6,2)) 结束 作为单位_PUPFEE _Y 我正在寻找一种方法,可以只编写一次计算,然后从一条语句中创建两个列别名,例如: ,bi.PolicyFeeFac

因此,我有两个列别名使用相同的计算:

,bi.PolicyFeeFactor=0时的情况
然后0
其他的
CAST(四舍五入(注:年政策*双政策系数,2)为十进制(6,2))
结束
作为一个单位_POLFEE_Y

,bi.PolicyFeeFactor=0时的情况
然后0
其他的
CAST(四舍五入(注:年政策*双政策系数,2)为十进制(6,2))
结束
作为单位_PUPFEE _Y

我正在寻找一种方法,可以只编写一次计算,然后从一条语句中创建两个列别名,例如:

,bi.PolicyFeeFactor=0时的情况
然后0
其他的
CAST(四舍五入(注:年政策*双政策系数,2)为十进制(6,2))
结束

作为UNIT\u PUPFEE\u Y,UNIT\u POLFEE\u Y

将其包装在子查询中,例如

SELECT Result AS UNIT_PUPFEE_Y, 
       Result AS UNIT_POLFEE_Y
FROM
    (
        SELECT CASE .... END AS Result
        FROM   tableName
    ) s

你可以这样写

SELECT *,UNIT_PULFEE_Y AS UNIT_PUPFEE_Y FROM
(SELECT *
,case when bi.PolicyFeeFactor = 0 then 0 else CAST(ROUND(nb.AnnualPolicyFee *              bi.PolicyFeeFactor,2)AS DECIMAL(6,2)) end as UNIT_PULFEE_Y
FROM Table )A

当我只从子查询中选择一个表达式时,这会起作用,但当我同时选择两个表达式时,会出现错误:
当子查询未使用EXISTS引入时,只能在选择列表中指定一个表达式
是否执行了上面给出的相同查询?