从行到列的 SQL 结果
Posted
技术标签:
【中文标题】从行到列的 SQL 结果【英文标题】:SQL result from Rows to Column 【发布时间】: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 【参考方案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 如果您想将其推广到任意数量的行,那么您需要一个包含行号/标签的列。以上是关于从行到列的 SQL 结果的主要内容,如果未能解决你的问题,请参考以下文章