SQL:如何按标题或索引(WHERE)列(SUM)?

Posted

技术标签:

【中文标题】SQL:如何按标题或索引(WHERE)列(SUM)?【英文标题】:SQL: How to (WHERE) column (SUM) by caption or index? 【发布时间】:2021-12-28 11:02:26 【问题描述】:

如何创建一个条件(WHERE),然后是一个包含如下函数的列标题或索引:

SELECT COLUMN_1 AS [COLUMN_1_Val], 
COLUMN_2 AS [COLUMN_2_Val], 
SUM(A+B-C-D)*E*F/G -SUM(H-I)*K/L AS [My_Complicated_Function], 
COLUMN_3 AS [COLUMN_3_Val]

WHERE [My_Complicated_Function]>0

如何在 WHERE 子句中调用我的函数列,甚至通过它的索引(如 (WHERE columnindex(2)>0))

【问题讨论】:

这取决于可用的 DBMS 功能。你的 DBMS 是什么? 没有FROM 子句?!? 【参考方案1】:

只需将您的第一部分放在子查询中

SELECT * FROM 
(
   SELECT COLUMN_1 AS [COLUMN_1_Val], 
   COLUMN_2 AS [COLUMN_2_Val], 
   SUM(A+B-C-D)*E*F/G -SUM(H-I)*K/L AS [My_Complicated_Function], 
   COLUMN_3 AS [COLUMN_3_Val]
   FROM ... 
)
WHERE [My_Complicated_Function]>0

【讨论】:

【参考方案2】:

比方说,你有一个函数 func_Sum 如下,

create function func_Sum  
(  
 @Num int   
)  
returns int 
as  
begin 
return(select @Num+@Num)  
end

现在你可以像这样在 where 子句中使用这个函数了,

SELECT 1 AS [COLUMN_1_Val], 
2 AS [COLUMN_2_Val], 
TEST.dbo.func_Sum(5) AS [my_func], 
5 AS [COLUMN_3_Val]
WHERE TEST.dbo.func_Sum(5) >0

【讨论】:

技术含量高的方式@Shafiqul Bari Sadman :) 谢谢

以上是关于SQL:如何按标题或索引(WHERE)列(SUM)?的主要内容,如果未能解决你的问题,请参考以下文章

为啥包含 group by、sum 或 where 子句时这条 SQL 语句会挂起?

如何选择 n 列和一个 SUM,同时仅按一些非聚合列分组?

当中间列可以是任何东西时,是不是使用 3 列 SQL 索引?

sql优化

SQL语句编写注意事项

SQL Server查询优化