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

SQL: How to (WHERE) column (SUM) by caption or index?

如何创建一个条件 (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)

比方说,你有一个函数 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

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

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