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 语句会挂起?