SQL SERVER 根据从表中查询到某列的值,创建一个表,列名是查询到的列名

--思路:从表中查询出记录,使用表变量,遍历记录,构造创建表sql语句。

/****** Object:  StoredProcedure [dbo].[ctable]    Script Date: 01/20/2016 14:26:30 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[ctable]    
AS
BEGIN    
    if exists(select * from sysobjects where name='Work_ClassShiftPre' and xtype='U')  
     drop table Work_ClassShiftPre    
     declare @sql varchar(5000)      
        
     DECLARE @temp TABLE
     (
      CType varchar(20),
      CName varchar(100)
     )  
  insert into @temp(CType, CName) SELECT   paytype_id, paytype_name
  FROM  Sys_PayType 
  
    declare @CType varchar(20)
    declare @CName varchar(100)
          
    set @sql = ' create table Work_ClassShiftPre (ClassShift_Item varchar(100),';    
    while EXISTS ( SELECT CType FROM @temp)
    begin
      set rowcount 1 
      select @CType=CType, @CName = CName from @temp
      set rowcount 0
      set  @sql = @sql + @CName +' varchar(100),' 
      --print @Cname
      DELETE FROM @temp WHERE CType=@CType;
    end
    select @sql = Substring(@sql,0,Len(@sql))
    set @sql = @sql + ')';
    exec(@sql)
    
END

GO


你可能感兴趣的:(SQL SERVER 根据从表中查询到某列的值,创建一个表,列名是查询到的列名)