【问题标题】:SQL result from Rows to Column从行到列的 SQL 结果
【发布时间】:2018-05-16 02:58:00
【问题描述】:

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

STAT_DATE       20180515

SERVER_NAME   abcd3363

Hits1         112389

Hits2         659405

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

STAT_DATE   SERVER_NAME     Hits1     Hits2

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

20180515    abcd3363        112389   659405  

【问题讨论】:

  • 您使用的是什么版本的 SQL?
  • 我们使用的是 Oracle 12c

标签: sql oracle sqlplus


【解决方案1】:

这应该会有所帮助 -

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

【讨论】:

  • 谢谢。是否可以不创建表并将其概括为任意数量的行。
  • @harshitsrivastava 如果您想将其推广到任意数量的行,那么您需要一个包含行号/标签的列。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-06-29
  • 1970-01-01
  • 2021-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-01
相关资源
最近更新 更多