SQL 将两行合二为一

Posted

技术标签:

【中文标题】SQL 将两行合二为一【英文标题】:SQL Combine two rows into one 【发布时间】:2016-05-19 04:05:10 【问题描述】:

我正在尝试使用 SQL 将 SQL 中的两行与新 ID 号合并为一

ID  Amount
------------
1   100
2   200
3   300
4   400
5   500
6   600

进入

ID  Amount
-------------
1   100
2   200
101 700
5   500
6   600

感谢您的帮助。

【问题讨论】:

基于什么?您是在查询还是更新数据? 您的意思是删除已知行,并插入sum行和新id吗?或者只是从表格中选择预期的结果? 请指定您希望生成的数据,因为您的问题包含的信息不足以回答 【参考方案1】:

查看SQL Procedures。我不确定您的目标,但我认为您需要定义一个 SQL 过程。自从我这样做以来已经有一段时间了,但它应该是这样的:

CREATE OR REPLACE PROCEDURE combine(
           ID1 IN <TABLE_NAME>.ID%TYPE,
           ID2 IN <TABLE_NAME>.ID%TYPE,
           NEWID IN <TABLE_NAME>.ID%TYPE)
    IS
    BEGIN

        INSERT INTO <TABLE_NAME> (ID, Amount) VALUES(NEWID, ((SELECT Amount FROM <TABLE_NAME> WHERE ID=ID1) + (SELECT Amount FROM <TABLE_NAME> WHERE ID=ID2)));
        DELETE FROM <TABLE_NAME> WHERE ID = ID1;
        DELETE FROM <TABLE_NAME> WHERE ID = ID2;

    COMMIT;

END;
/

要获得您描述的状态,您可以调用例程

combine(4, 5, 101);

【讨论】:

以上是关于SQL 将两行合二为一的主要内容,如果未能解决你的问题,请参考以下文章

SQL select 将两列合二为一

将两条SQL语句合二为一,满足一定条件时更新表中的一行

SQL Server,如何将两列合并为一列?

将两行数据集转换为一列

sqlserver怎么将两行数据合并成一行

sql怎么把两张表合并成一张