sql-一次计算两个字段

f45qwnt8  于 2021-06-25  发布在  Mysql
关注(0)|答案(2)|浏览(330)

我有一个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实现吗?是否在一个案例中计算了两个字段?

lmyy7pcs

lmyy7pcs1#

您可以使用基本逻辑来决定 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 被击中。

yx2lnoni

yx2lnoni2#

我想在一个例子中计算两个场
你不能那样做™.
您可以像这样在查询中放置两个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,可以在 Package 器查询中生成额外的字段值

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

相关问题