Oracle查询将多列转换为一列

2024-04-15

我的表中有 50 列,它只返回一行,我希望 50 列的一行显示为 50 行和 1 列。

任何人都可以建议我使用 Oracle 查询吗?


您可以使用UNPIVOT对于像这样的一行,仅获取包含值的列

SELECT colvalue 
  FROM
(
  SELECT * 
    FROM Table1
  UNPIVOT INCLUDE NULLS
  (
    colvalue FOR cols IN (col1, col2, col3, col4, col5, col6, col7, col8, col9, col10, ... col50)
  )
);

示例输出:



| COLVALUE |
------------
|        1 |
|        2 |
|   (null) |
|..........|
  

如果您需要包含数据透视表中的列名称的列,只需放弃外部选择

SELECT * 
  FROM Table1
UNPIVOT INCLUDE NULLS
(
  colvalue FOR cols IN (col1, col2, col3, col4, col5, col6, col7, col8, col9, col10, ... col50)
);

示例输出:



|  COLS | COLVALUE |
--------------------
|  COL1 |        1 |
|  COL2 |        2 |
|  COL3 |   (null) |
| ..... |......... |
  

Here is SQLFiddle http://sqlfiddle.com/#!4/1dc5a/2 demo

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Oracle查询将多列转换为一列 的相关文章

随机推荐