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

如何编写SELECT语句从cad_changes表不同行生成指定计算结果?

解决方案:根据日期返回指定计算结果

嘿,这个需求其实很简单,用SQL里的CASE表达式或者UNION ALL就能搞定,具体选哪种取决于你想要的返回格式是多列展示还是多行展示,我给你两种方案参考:

方案1:按日期返回多列计算结果

如果希望每个符合条件的日期行,对应的计算结果放在不同的列里,可以用CASE分别生成每个计算列:

SELECT
    change_date,
    -- 第一个计算项:仅2018-03-01返回结果,其他日期返回NULL
    CASE
        WHEN change_date = '2018-03-01' THEN 83028302 - 88809433
        ELSE NULL
    END AS calc_result_1,
    -- 第二个计算项:2018-03-01返回第二个结果,2018-03-13返回指定结果
    CASE
        WHEN change_date = '2018-03-01' THEN 100148757 - 87869589
        WHEN change_date = '2018-03-13' THEN 87869589 - 83028302
        ELSE NULL
    END AS calc_result_2
FROM cad_changes
WHERE change_date IN ('2018-03-01', '2018-03-13');

说明:

  • WHERE子句过滤出只包含目标日期的行,避免无关数据干扰
  • 每个CASE分支对应一个计算逻辑,不符合条件的日期会返回NULL(你也可以改成其他默认值,比如0,根据需求调整)

方案2:将每个计算结果作为单独行返回

如果希望每个计算结果都单独占一行(比如2018-03-01会返回2行,2018-03-13返回1行),可以用UNION ALL拼接三个查询:

-- 2018-03-01的第一个计算结果
SELECT
    change_date,
    83028302 - 88809433 AS calculation_result
FROM cad_changes
WHERE change_date = '2018-03-01'

UNION ALL

-- 2018-03-01的第二个计算结果
SELECT
    change_date,
    100148757 - 87869589 AS calculation_result
FROM cad_changes
WHERE change_date = '2018-03-01'

UNION ALL

-- 2018-03-13的计算结果
SELECT
    change_date,
    87869589 - 83028302 AS calculation_result
FROM cad_changes
WHERE change_date = '2018-03-13';

说明:

  • UNION ALL会保留所有行(包括重复的),如果你的表中同一个日期有多行数据,每个行都会生成对应的计算结果行
  • 如果你想每个日期只返回唯一的计算结果行,可以给每个子查询加DISTINCT,或者用GROUP BY change_date

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:06:26