首页 > 解决方案 > 从行到列的 SQL 结果

问题描述

如何通过在 shell 脚本中使用 sqlplus 以列形式获取 sql 结果,如下所示。请注意第 1 列是 Header,第 2 列是行值(只有 1 行需要显示,没有其他匹配项。)

STAT_DATE       20180515

SERVER_NAME   abcd3363

Hits1         112389

Hits2         659405

而通过选择命令很简单,我得到如下。

STAT_DATE   SERVER_NAME     Hits1     Hits2

----------- --------------  -------- --------

20180515    abcd3363        112389   659405  

标签: sqloraclesqlplus

解决方案


这应该有帮助 -

CREATE TABLE tabl1
    (STAT_DATE varchar2(11), SERVER_NAME varchar2(14), Hits1 varchar2(8), Hits2 varchar2(8))
;

INSERT ALL 
    INTO tabl1 (STAT_DATE, SERVER_NAME, Hits1, Hits2)
         VALUES ('20180515', 'abcd3363', '112389', '659405')
SELECT * FROM dual
;

询问 -

select * from tabl1
unpivot (vals for cols in (STAT_DATE as 'STAT_DATE', SERVER_NAME AS 'SERVER_NAME', Hits1 AS 'Hits1', Hits2 AS 'Hits2'));
;

输出 -

COLS        VALS
STAT_DATE   20180515
SERVER_NAME abcd3363
Hits1       112389
Hits2       659405

推荐阅读