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

如何编写SQL查询创建损失类型A、损失类型B对应的金额列

实现方案

这个需求是典型的按字段条件做列拆分场景,使用标准SQL的CASE条件表达式即可实现,兼容所有主流关系型数据库(MySQL、PostgreSQL、SQL Server、Oracle等)。

通用SQL写法

注意原始数据中LOSSTYPE字段存储的值带末尾点(A./B.),判断条件需要和实际存储值匹配:

SELECT
    Name,
    CASE WHEN LOSSTYPE = 'A.' THEN LOSSAMT ELSE 0 END AS `Losstype A amt`,
    CASE WHEN LOSSTYPE = 'B.' THEN LOSSAMT ELSE 0 END AS `LOSSTYPE B amt`
FROM 替换为你的实际表名;

数据库专属简化写法(MySQL环境)

如果使用MySQL,也可以用IF函数写得更简洁,执行效果完全一致:

SELECT
    Name,
    IF(LOSSTYPE = 'A.', LOSSAMT, 0) AS `Losstype A amt`,
    IF(LOSSTYPE = 'B.', LOSSAMT, 0) AS `LOSSTYPE B amt`
FROM 替换为你的实际表名;
注意事项
  • 如果你的表中LOSSTYPE实际存储值不带末尾的点(即存的是A/B而非A./B.),把条件判断里的字符串对应修改即可
  • 如果LOSSAMT是字符串类型、值末尾带点,需要先做格式转换再取值,可以把语句里的LOSSAMT替换为CAST(TRIM(TRAILING '.' FROM LOSSAMT) AS DECIMAL(12,2)),金额为数值类型时无需额外处理
  • 后续如果需要新增其他损失类型的拆分列,按照相同的条件判断逻辑新增对应列即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 12:03:17