如何解决如何在同一Select语句中使用查询结果?
在我的select语句中,我计算了一些值,然后需要根据已经计算出的值的结果来计算新值。不使用临时表如何归档?
SELECT
CASE WHEN [Customer] = '173220000' THEN '1' ELSE NULL END AS Ver_a,CASE WHEN [Service] = '173220000' THEN '1' ELSE NULL END AS Ver_b,CASE WHEN [Productavailability] = '173220000' THEN '1' ELSE NULL END AS Ver_c,(SUM(Ver_a,Ver_b,Ver_c)/3) AS Identity_Ver
FROM x
解决方法
只需使用子查询/派生表:
SELECT
Ver_a,Ver_b,Ver_c,(coalesce(Ver_a,0) + coalesce(Ver_b,0) + coalesce(Ver_c,0))/3 AS Identity_Ver
FROM (
SELECT
CASE WHEN [Customer] = '173220000' THEN '1' ELSE NULL END AS Ver_a,CASE WHEN [Service] = '173220000' THEN '1' ELSE NULL END AS Ver_b,CASE WHEN [Productavailability] = '173220000' THEN '1' ELSE NULL END AS Ver_c
FROM x
) x
注意1:由于不进行分组,因此不需要sum
函数,只需要求和运算符(+
)-sum function不需要用逗号分隔值列表。
注2:如果不使用case表达式返回null,则不使用coalesce
函数就无法进行求和。
首先,您不能执行sum(var1,var2,var3)
。
如上所述,您问题的答案似乎是最后的代码。
但是,我不得不问:你想完成什么?您的方法对我来说确实有意义:-(
SELECT
Sum(
CASE WHEN [customer] = '173220000' THEN 1 ELSE 0 END +
CASE WHEN [service] = '173220000' THEN 1 ELSE 0 END +
CASE WHEN [productavailability] = '173220000' THEN 1 ELSE 0 END
) / 3 AS Identity_Ver
FROM x
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。