select id, (sum(col2) - sum(col1)) as net_col1_col2
from data4sim
where end_time <= :input_time
and (sum(col2) + sum(col1)) > 0
and (
(sum(col1) + sum(col2))
<= abs(coalesce(col3, 0) - (col4 - (sum(col2) - sum(col1)))) + :EPS
)
group by id
字符串
这是我第一次使用SQL,我试图写一个查询,上面的条件。我注意到,我计算(sum(col1) + sum(col2))
和(sum(col2) - sum(col1))
两次,我不知道如何存储中间结果,以便我可以在第二个中重用它。
我可以这样做吗:
where time < :input_time
and (sum(col1) + sum(col2)) as temp
and (temp > 0)
and (temp < col3) <= ....
型
我想一般来说,我不知道如何存储中介结果的条件。
2条答案
按热度按时间sc4hvdpw1#
在sqlite中,您可以在SELECT子句中为列设置别名,然后在HAVING子句中引用该别名(这是您应该移动基于
SUM()
等聚合构建的条件的位置)。字符串
dbfiddle here
falq053o2#
我不知道你的数据,但像这样的东西应该这样做:
字符串
可以在
having
子句中使用select
的别名。