简而言之,你不能。 在Db2 for IBM i中,没有任何内容可以使用SELECT *和动态表来完成此操作。 很长的答案,您可以构建一个存储过程或用户定义的表函数,动态构建并执行一个类似于以下内容的老式语句:
with firstRow as
(select F1, F2, F3 from table fetch first row only)
select F1
from firstRow
UNION ALL
select F2
from firstRow
UNION ALL
select F3
from firstRow;
3条答案
按热度按时间4jb9z9bj1#
请尝试使用下面的通用表函数。
第一个参数是任何有效的SELECT语句文本。
第2个参数是此SELECT语句中要转换的列名的列表。
您必须:
构造SELECT语句以仅返回字符串列并指定简单的列列表:
或者将列列表中的每个非字符串列显式转换为CHAR:
bprjcwpo2#
简而言之,你不能。
在Db2 for IBM i中,没有任何内容可以使用
SELECT *
和动态表来完成此操作。很长的答案,您可以构建一个存储过程或用户定义的表函数,动态构建并执行一个类似于以下内容的老式语句:
或者,由于您使用的是v7.4,您可以构建并执行一个动态语句,将字段
CONCAT
为字符串列表,然后使用SPLIT() table function将列表解构为行。最后,您可能能够构建并执行一个动态语句,该语句使用JSON函数构建JSON数组,然后使用JSON_TABLE()函数将该数组分解为行。
但正如所强调的,在所有情况下,您都需要知道实际SELECT语句的列名和表名,因此需要动态构建语句。
soat7uwm3#
您可以尝试使用Lateral