首页 > 解决方案 > 获取 SQL 代码中的条件更新值

问题描述

我有一个查询:

select round(((avg(counts) * 100) * table2.times) / 100, 2) as Average, userid 
from table1
inner join table2 on table1.userid = table2.ufkuserid 

现在在table1一列中的值为PP,RE,NE

基于上述 3 PE,RE,NE,我想将table2.times值更改为15,20,30

但是我必须使用SQL代码来映射和更改它,否则我会卡住。

所以table2.times必须是硬编码的值15,20,30

标签: sqlsql-server

解决方案


这是你想要的吗?

select ROUND(((AVG(counts) * 100) * v.times) / 100, 2) AS Average,
       userid 
from table1 inner join
     table2 
     on table1.userid = table2.ufkuserid cross apply
     (values (case table1.onecolumn
                  when 'PE' then 15.0 when 'RE' then 20.0 when 'NE' then 30.0
              end)
     ) v(times)
group by userid;

推荐阅读