当前位置 : 主页 > 网络推广 > seo >

LocalVariable内部数据检索SELECT – SQL

来源:互联网 收集:自由互联 发布时间:2021-06-16
我正在创建一个storedprocedure,它有一个SELECT子句从一些连接表中选择多个列.对于其中一个colums,值取决于CASE的条件. SELECT DISTINCT table1.col1 as var1, table2.col2 as var2, CASE WHEN (FLOOR(table3.col3/0.2
我正在创建一个storedprocedure,它有一个SELECT子句从一些连接表中选择多个列.对于其中一个colums,值取决于CASE的条件.

SELECT DISTINCT
 table1.col1 as var1,
 table2.col2 as var2,
 CASE WHEN (FLOOR(table3.col3/0.2)*0.2) > 20 THEN 20
      WHEN (FLOOR(table3.col3/0.2)*0.2) <= 20 THEN FLOOR(table3.col3/0.2)*0.2
      ELSE table3.col4 -- selecting another value is the 
                       -- value in table3.col3 is null
      END as var3 
FROM ... 
WHERE ...

正如你在选择中看到的那样,我做了三次FLOOR(table3.col3 / 0.2)* 0.2计算.是否可以将此计算值存储在WITHIN SELECT中的变量中,然后在条件中使用此变量?

提前致谢,

吉荣

不,你可以把它减少到2个以下的电话.但是你要做的其他任何事情都会花费更多,然后实际上这样做,因为你在那里做的非常快.当你实际上有一些繁重的操作时,你可以考虑改进的东西.这没什么.您也可以创建一个get_min函数,但我认为它不值得.

有2个电话:

case when table3.col3 then table3.col4
     when (FLOOR(table3.col3/0.2)*0.2) > 20 THEN 20
     else FLOOR(table3.col3/0.2)*0.2
end

具有最小功能:

case when table3.col3 then table3.col4
     else dbo.get_min(FLOOR(table3.col3/0.2)*0.2,20)
end

作为旁注,我所指的min函数必须构建(用户定义的函数).

网友评论