0

我正在尝试创建一个存储过程,它将创建一个临时表 A,其列将取决于另一个表 B 的行数。这样做的背景是我允许用户创建自己的“组” ,关于组的信息将存储在表 B 中。表 A 的创建将查看表 B 中的行数,并为表 B 中的每个组创建一个列(使用表 B 中的组名称作为表 A) 中的列名。我无法反转轴(轴?),因为行将是我系统中每个用户的条目,这也是可变的。

总而言之:我将如何创建一个过程来创建具有可变列数的临时表?

谢谢你。

4

2 回答 2

3
DECLARE @sSQL varchar(max),
  @ColumnName CHAR(128)

DECLARE TableCursor CURSOR FOR
  SELECT ColumnName FROM GroupTable

SET @sSQL = 'CREATE TABLE ##NewTempTable ('

OPEN TableCursor

FETCH NEXT FROM TableCursor INTO @ColumnName

WHILE @@FETCH_STATUS = 0
BEGIN 

SET @sSQL = @sSQL + RTRIM(@ColumnName) + ' CHAR(10) ,'

FETCH NEXT FROM TableCursor INTO @ColumnName

END

CLOSE TableCursor

DEALLOCATE TableCursor

SET @sSQL = @sSQL + ')'

EXEC (@sSQL)

SELECT * FROM ##NewTempTable

我希望这有帮助。在 DECLARE CURSOR 中,您需要将“ColumnName”和“TableName”更改为您正在查询的实际列/表。

于 2013-08-29T21:15:30.180 回答
0

您不应该这样做 - 相反,将组名也设为表 A 中的列。

于 2013-08-29T18:28:01.783 回答