簡體   English   中英

如何將n個列添加到現有表中,新列應具有現有列的聚合

[英]How to add n number of columns to an existing table,the new columns should have the aggregate of an existing column

我有一張像這樣的桌子:

ID NAME SALARY
1  JOSE 100
2  KEVI 100
3  JAMS 200
4  SANJ 400

我需要獲得如下輸出:

ID NAME SALARY SALARY-1 SALARY-2 SALARY-3 SALARY-4 
1  JOSE  100   99       98       97       96
2  KEVI  100   99       98       97       96
3  JAMS  200   199      198      197      196
4  SANJ  400   399      398      397      396

如何獲得所需的桌子?

如果只需要輸出,則使用查詢:

select id, name, salary, salary-1, salary-2, salary-3, salary-4
from table t;

如果您確實想將這些列添加到表中,則可以使用alter table add column ,然后更新值。

使用此存儲過程可獲得結果。 這對我有用。 請根據您的數據庫更改表名和列名。

DELIMITER $$
DROP PROCEDURE IF EXISTS my_proc$$

CREATE PROCEDURE my_proc(n INT)
proc : BEGIN

SET @q = CONCAT('SELECT ID, NAME, SALARY');
SET @num = 1;

select_loop : LOOP

    SET @q = CONCAT(@q, ', SALARY - ',@num);

    IF n = 0 THEN
        LEAVE select_loop;
    END IF;

    SET n = n - 1;
    SET @num = @num + 1;

END LOOP;

SET @q = CONCAT(@q, ' FROM sal');

PREPARE stmt FROM @q;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

END$$

DELIMITER ;

使用您想要在輸出中顯示的薪水列數調用存儲過程

mysql> CALL my_proc(4);
+----+------+--------+------------+------------+------------+------------+------------+
| ID | NAME | SALARY | SALARY - 1 | SALARY - 2 | SALARY - 3 | SALARY - 4 | SALARY - 5 |
+----+------+--------+------------+------------+------------+------------+------------+
|  1 | jose |    100 |         99 |         98 |         97 |         96 |         95 |
|  2 | kevi |    100 |         99 |         98 |         97 |         96 |         95 |
|  3 | jams |    200 |        199 |        198 |        197 |        196 |        195 |
|  4 | sanj |    400 |        399 |        398 |        397 |        396 |        395 |
+----+------+--------+------------+------------+------------+------------+------------+
4 rows in set (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM