ppo*_*one 1 sql database sqlite
嗨,我有一个查询,其中表达式将在大多数情况下被评估两次.我只想评估一次.我想分配
CAST(ROUND(VOLUME - ((CAPACITY*1.0)/TIMEFRAME)*(STRFTIME('%s','now') - UPDATED_TIMESTAMP)) AS INT)
Run Code Online (Sandbox Code Playgroud)
变量,因此它不会被评估两次.我怎么能在一个SQL查询中执行此操作?
SELECT CASE
WHEN CAST(ROUND(VOLUME - ((CAPACITY*1.0)/TIMEFRAME)*(STRFTIME('%s','now') - UPDATED_TIMESTAMP)) AS INT) > 0 THEN CAST(ROUND(VOLUME - ((CAPACITY*1.0)/TIMEFRAME)*(STRFTIME('%s','now') - UPDATED_TIMESTAMP)) AS INT)
ELSE 0
END
FROM BUCKETS;
Run Code Online (Sandbox Code Playgroud)
您可以在子查询中计算表达式,然后在查询中使用它的name(expr):
SELECT CASE
WHEN expr > 0 THEN expr
ELSE 0
END
FROM (
SELECT
-- add BUCKETS.*, here if you need other BUCKETS fields return to query
CAST(ROUND(VOLUME - ((CAPACITY*1.0)/TIMEFRAME)*(STRFTIME('%s','now') - UPDATED_TIMESTAMP)) AS INT) AS expr
FROM BUCKETS
) b
Run Code Online (Sandbox Code Playgroud)