sql - 如何将动态列添加到现有表

标签 sql sql-server sql-server-2008 sql-server-2008-r2 sql-server-2012

我有 2 个表,第一个表包含以下列,

 id code    Name
 1  c1  chk1
 2  c2  chk2
 3  c3  chk3

第二个表包含以下列,

id,Name,Chk1,chk2,Chk3

如果表 1 动态更新为值“4”、“c4”、“ch4”,我必须将列“Chk4”添加到表 2 中。如何编写程序来执行此操作?

我已经尝试了以下程序,但效果不佳。

         create proc Add_Check
          as 
          begin
          declare @Column varchar(50)
          declare @query varchar(255)
          declare @query1 varchar(255)
          set @Column= (select top 1 QUOTENAME(Name)
            from table1 where id=(Select MAX id) from table1))
          if exists(select 1 from table1
         where Name=@Column) 
         begin
         set @query = 'alter table table2 add ' + @Column + ' Varchar (50)'
         set @query1 = 'alter table table2 add ' + @Column + '_CompletedDate Varchar (50)'
         exec(@query)
         end
         end

最佳答案

将此查询用作过程。

CREATE PROC ADD_CHECK
AS 
BEGIN
    DECLARE @COLUMN VARCHAR(50)
    DECLARE @QUERY VARCHAR(255)
    DECLARE @QUERY1 VARCHAR(255)

    SET @COLUMN= (SELECT TOP 1 NAME FROM TABLE1 WHERE ID=(SELECT MAX (ID)     FROM TABLE1))

    IF EXISTS(SELECT 1 FROM TABLE1 WHERE NAME=@COLUMN) 
    BEGIN
        SET @QUERY = 'ALTER TABLE TABLE2 ADD ' + @COLUMN + ' VARCHAR (50)'
        SET @QUERY1 = 'ALTER TABLE TABLE2 ADD ' + @COLUMN + '_COMPLETEDDATE VARCHAR     (50)'
        EXEC(@QUERY)
    END
END

关于sql - 如何将动态列添加到现有表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23356923/

相关文章:

MYSQL 多参数搜索

mysql - 按查询优化组

sql - MySQL 外键约束 - 整数列

sql - 如何对时差超过一小时的记录进行分组?

sql-server - 我怎样才能枚举一个sql server的数据库

sql - 如何检查sql server中的表是否被锁定

sql-server - 如何将超过 8000 个字符的 XML 字段转换为字符串?

sql - 是否可以从经度/纬度获取城市?

c# - 如何使用 Angular 和 ASP.Net Core 转换字节数组 [] 中的文件并存储在数据库中?

c# - 如何使用执行标量返回 bool 值