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

使用T-SQL为dbo.asientti表创建条件列分离借贷金额

解决方法:将D/H标识的金额拆分为借方和贷方列

完全明白你的需求!我们可以用SQL的CASE条件判断语句轻松实现金额的拆分,把原来的单金额列根据D/H标识分别映射到独立的借方、贷方列中。下面分几种常用场景给出具体实现:

一、直接查询拆分结果(临时查看)

如果只是需要查询时展示拆分后的列,不需要修改原表,用这个语句就够了:

SELECT 
    -- 保留原表中需要的其他列,比如凭证号、交易日期等,按需添加
    凭证号,
    交易日期,
    -- 当D/H为'D'时取金额,否则显示0
    CASE WHEN [D/H] = 'D' THEN 金额 ELSE 0 END AS 借方金额,
    -- 当D/H为'H'时取金额,否则显示0
    CASE WHEN [D/H] = 'H' THEN 金额 ELSE 0 END AS 贷方金额
FROM dbo.asientti;

二、创建新表存储拆分后的数据

如果需要长期保存拆分结果,可以新建一张表来存储结构化后的信息:

-- 先创建新表,包含原表的必要字段+拆分后的借贷列
CREATE TABLE dbo.asientti_split (
    凭证号 INT PRIMARY KEY, -- 替换为你实际的主键字段
    交易日期 DATE,
    摘要 VARCHAR(100),
    借方金额 DECIMAL(18,2), -- 金额类型根据实际场景调整,比如INT、FLOAT等
    贷方金额 DECIMAL(18,2)
);

-- 从原表插入拆分后的数据
INSERT INTO dbo.asientti_split (凭证号, 交易日期, 摘要, 借方金额, 贷方金额)
SELECT 
    凭证号,
    交易日期,
    摘要,
    CASE WHEN [D/H] = 'D' THEN 金额 ELSE 0 END,
    CASE WHEN [D/H] = 'H' THEN 金额 ELSE 0 END
FROM dbo.asientti;

三、在原表中新增借贷列并填充数据

如果希望直接在原表上扩展字段,不用新建表,可以这样操作:

-- 先添加借方、贷方列
ALTER TABLE dbo.asientti ADD 借方金额 DECIMAL(18,2);
ALTER TABLE dbo.asientti ADD 贷方金额 DECIMAL(18,2);

-- 更新列数据
UPDATE dbo.asientti
SET 
    借方金额 = CASE WHEN [D/H] = 'D' THEN 金额 ELSE 0 END,
    贷方金额 = CASE WHEN [D/H] = 'H' THEN 金额 ELSE 0 END;

小提示:

  • 请把代码里的凭证号、交易日期、金额等字段名替换成你表中的实际列名
  • 金额类型(比如DECIMAL(18,2))要根据原表的金额字段类型调整,原字段是INT就改成INT,是FLOAT就改成FLOAT
  • 如果用的是MySQL,方括号[]要换成反引号`,比如`D/H`

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:39:15