gpt4 book ai didi

sql - 数据检索中的 LocalVariable SELECT - SQL

转载 作者:行者123 更新时间:2023-12-04 16:11:21 25 4
gpt4 key购买 nike

我正在制作一个存储过程,它有一个 SELECT 子句,从一些连接的表中选择多个列。对于这些列之一,该值取决于 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 THE 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 函数(用户定义的函数)。

关于sql - 数据检索中的 LocalVariable SELECT - SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12491296/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com