是否可以仅使用SQL * Plus格式将列转置为行?

我想知道是否可以仅使用SQL * Plus格式将行转置为列,而避免使用UNPIVOT。

实际上,我想为此脚本添加一些格式

REM filename query.sql
set heading off
SELECT 'aaaaaaaaaa' A,'bb' B,'ccccc' C,'ddddddd' D from dual;

为了获得此输出

SQL> @query
aaaaaaaaaa
bb
ccccc
ddddddd

SQL>
mengzai8888 回答:是否可以仅使用SQL * Plus格式将列转置为行?

如果您事先知道要打印的所有值都是两个字符长,那么您可以简单地将linesize设置为2

SQL> set heading off
SQL> set linesize 2
SQL> SELECT 'aa' A,'bb' B,'cc' C,'dd' D from dual;

aa
bb
cc
dd


SQL>

在编辑问题之后,这是一个更通用的解决方案:如果您事先知道字符串值的最大大小,则可以将每一列格式化为最大大小(使用选项column ... format a<n>) ,并将行大小设置为相同大小,如下所示:

SQL> column A format a50
SQL> column B format a50
SQL> column C format a50
SQL> column D format a50
SQL> set linesize 50
SQL> SELECT 'aaaaaaaaaa' A,'ccccc' C,'ddddddd' D from dual;

aaaaaaaaaa
bb
ccccc
ddddddd


SQL>
本文链接:https://www.f2er.com/3132739.html

大家都在问