我有一个sql查询,它按如下方式计算字段:
Select
Case When b.xField > 10
then 20
when b.xField > 48
then 10
else 0
end as field1
from (Select CASE WHEN numberChosen < 15
THEN 10
WHEN numberChosen > 15
THEN 48
END as xField
From secondTable) B
我需要的是,当field1为10时,再做一些其他计算以保存在另一个字段上。
例如:
then 20 AND field2 = yData - 26
所以当案例在20时,则有另一个字段等于yData - 26。 可以使用Sql中的Cases来实现吗?在一个案例中计算两个字段?
答案 0 :(得分:0)
您可以使用在第二种情况下决定何时field1 = 10
(即xField > 48
)的基本逻辑:
SELECT CASE WHEN xField > 48
THEN 10
WHEN xField > 10
THEN 20
ELSE 0
END as field1,
CASE WHEN xField > 48
THEN yData - 26
END as field2
FROM (SELECT CASE WHEN numberChosen < 15
THEN 10
WHEN numberChosen > 15
THEN 48
END as xField,
yData
FROM secondTable) B
我更改了您的案例顺序,因为在> 10
条件之前设置> 48
条件永远不会让> 48
被命中。
答案 1 :(得分:0)
我想在一个Case中计算两个字段
你不能这样做。
您可以在查询中放置两个case子句,如下所示:
Select
Case When xField > 10
then 20
when xField > 48
then 10
else 0
end as field1,
Case When xField > 10
then ydata - 26
else 0
end as field2
from myData
或者如果真的很难计算field2
,你可以在包装器查询中生成额外的字段值SELECT field1, CASE WHEN field1 > 10 THEN ydata -20 ELSE 0 END field2
FROM (
Select
ydata,
Case When xField > 10
then 20
when xField > 48
then 10
else 0
end as field1
from myData
) subquery