CSDN-Ada助手 2024-04-13 18:27 采纳率: 1.6%
浏览 3

case when then else end如果判断条件太长,请问可以复用条件 或者在 then里面生成2个字段的结果吗?_(语言-python)

该问题来自社区帖: https://bbs.csdn.net/topics/618448341.为符合问答规范, 该问题经过ChatGPT优化
<html><head><title>优化问题</title></head><body>

以下是需要优化的问题:

SELECT '五合一水果罐头' AS name, '罐头加工' AS type,
CASE
    WHEN sum(safe_additive) > (condition...) 
    THEN '合格' ELSE '不合格' 
    END AS quality 
    FROM t_table		 
    WHERE additive_type= '一类';

上面能够判断到产品是 合格 还是 不合格,但是我还想要根据 合格 和 不合格 增加一个字段 储存后续处理,例如:

SELECT '五合一水果罐头' AS name, '罐头加工' AS type,
(CASE
    WHEN sum(safe_additive) > (condition...) 
    THEN '合格' ELSE '不合格' 
    END AS quality),
(CASE
    WHEN sum(safe_additive) > (condition...) 
    THEN '入库' ELSE '销毁' 
    END AS process),
    FROM t_table		 
    WHERE additive_type= '一类';

但是这里有个问题: condition.. 是一条非常长的 sql, 这样复制粘贴 两倍长度看着很夸张,有没有方法下面得case when 可以根据上面quality 来判断生成 process 呢? 或者其它方法?

</body></html>
  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-13 18:27
    关注

    引自免费微信小程序:皆我百晓生

    当然,理解您的需求后,我们可以将重复的条件部分封装成一个子查询,然后在外部的 CASE 语句中引用这个子查询的结果。这样可以减少代码的冗余,并且使代码更加清晰易读。以下是改进后的 SQL 查询:

    WITH summary AS (
        SELECT 
            SUM(safe_additive) AS total_safe_additive,
            additive_type
        FROM t_table
        WHERE additive_type = '一类'
        GROUP BY additive_type
    )
    
    SELECT 
        '五合一水果罐头' AS name, 
        '罐头加工' AS type, 
        CASE 
            WHEN summary.total_safe_additive > (your_condition_here) THEN '合格' 
            ELSE '不合格' 
        END AS quality, 
        CASE 
            WHEN summary.total_safe_additive > (your_condition_here) THEN '入库' 
            ELSE '销毁' 
        END AS process
    FROM summary;
    

    在这个例子中,我们首先创建了一个名为 summary 的 Common Table Expression(CTE),它计算了满足条件的一类添加剂的总和。然后,在主查询中,我们使用这个 CTE 中的结果来进行 CASE 判断。

    请注意,你需要将 (your_condition_here) 替换为你的实际条件,这可能是多个条件的组合,例如比较、逻辑运算等。由于您没有提供具体的条件,我在这里使用占位符。

    这样,即使条件很长,你也只需要写一次,提高了代码的可维护性和可读性。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 4月13日

悬赏问题

  • ¥15 C语言设计一个简单的自动换档程序
  • ¥15 关于logstash转发日志时发生的部分内容丢失问题
  • ¥17 pro*C预编译“闪回查询”报错SCN不能识别
  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。