You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于含计算列的SQL查询筛选结果?是否需用Union?

解决方案:无需使用UNION,直接添加WHERE过滤即可

不需要用UNION,UNION是用来合并多个独立查询结果集的工具,你现在只是要对单表查询的结果做条件筛选,完全没必要用到它。

直接在原查询后加上WHERE子句就能实现需求,下面是两种可行的写法:

通用写法(兼容所有数据库)

SELECT 
    BookValue, 
    MarketValue, 
    Allowance, 
    MarketValue - (BookValue - Allowance) AS Unrealized 
FROM Holdings.table
WHERE 
    Allowance IS NOT NULL 
    AND (MarketValue - (BookValue - Allowance)) > 0;

简化写法(部分数据库支持,如MySQL、PostgreSQL 12+)

如果你的数据库允许在WHERE子句中直接引用SELECT里定义的列别名,可以用这种更简洁的写法:

SELECT 
    BookValue, 
    MarketValue, 
    Allowance, 
    MarketValue - (BookValue - Allowance) AS Unrealized 
FROM Holdings.table
WHERE 
    Allowance IS NOT NULL 
    AND Unrealized > 0;

说明

  • Allowance IS NOT NULL 用来过滤掉Allowance为空的记录
  • 第二个条件筛选出Unrealized大于0的记录,通用写法重复计算了Unrealized,确保在所有数据库中都能正常运行;简化写法更易读,但需要数据库支持别名引用。

内容的提问来源于stack exchange,提问作者Bigcat1148

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 01:42:33