有没有办法使用基于另一个表中的行的列名创建和填充Sybase表列?

时间:2013-01-22 19:59:03

标签: sql tsql stored-procedures sybase-ase

是否可以将Sybase Attribute-Value表转换为每列属性结果集。可以这样做吗?

来源表:

| attribute | value |
~~~~~~~~~~~~~~~~~~~~~
| a1        | A1    |
| b2        | BB2   |
| random    | X     |

为简单起见,假设varchar(255)attribute列上的valueattribute上的唯一索引;并且属性名称是100%保证是有效的Sybase列名称的字符串。

所需的选择结果:

| a1   | b2   | random |
~~~~~~~~~~~~~~~~~~~~~~~~
| A1   | BB2  | X      |

这可以通过Sybase ASE中的SQL来实现吗? (12或15)?

注意:

  • 为了清楚起见:我们事先并不知道属性集是什么!!!

  • 不需要将结果集保留在#temp pound表之外。

  • 限制是没有启用Java。


<子> 在我看来,这是不可能的,因为Sybase 15 ASE文档表明ALTER TABLE中的列名不能包含动态数据:

  

<子>的 computed_column_expression
  是任何有效的T-SQL表达式,包含来自其他表,局部变量,聚合函数或子查询的。它可以是由一个或多个运算符连接的列名,常量,函数,全局变量或大小写表达式中的一个或组合。除非虚拟计算列引用实现计算列,否则不能在计算列之间进行交叉引用。

1 个答案:

答案 0 :(得分:1)

是。我使用EXEC

完成了这项工作
 SELECT @my_stmt = "ALTER TABLE #result ADD " + @param + " varchar(255) NULL" 
 EXEC(@my_stmt)