1

有没有办法将 Sybase Attribute-Value 表转换为 Attribute-per-column 结果集。这可以做到吗?

源表:

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

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

期望的选择结果:

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

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

笔记:

  • 需要明确的是:我们事先并不知道属性集是什么!!!

  • 无需将结果集保留在#temp 磅表之外。

  • 限制是没有启用 Java。


在我看来这是不可能的,因为 Sybase 15 ASE 文档指出列名ALTER TABLE不能包含动态数据:

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

4

1 回答 1

1

是的。我已经使用EXEC

 SELECT @my_stmt = "ALTER TABLE #result ADD " + @param + " varchar(255) NULL" 
 EXEC(@my_stmt)
于 2014-12-29T19:16:43.500 回答