当前位置: 首页 > 面试题库 >

Oracle行到列的转换

闻人高卓
2023-03-14
问题内容

我有桌子

select * from table

返回的值是

login id | status_name | count
===============================
admin    | open        |     3
admin    | closed      |     5
test     | inprogress  |    10
test     | open        |    10
test     | closed      |    11
user1    | closed      |     5
user1    | pending     |    10

如何将这些数据从行转移到列?我要这样

login_id | open | closed | inprogress | pending
================================================
admin    |    3 |      5 |          0 |       0
test     |   10 |     10 |         10 |       0
user1    |    0 |      5 |          0 |      10

问题答案:
select login_id
     , sum(case when status_name='open' then count end) open
     , sum(case when status_name='closed' then count end) closed
     , sum(case when status_name='inprogress' then count end) inprogress
     , sum(case when status_name='pending' then count end) pending
from table
group by login_id


 类似资料:
  • 问题内容: 我有这种形式的查询返回值(查询返回超过50列)。 对于行值。我希望将这些详细信息转换为列并采用以下形状: 问题答案: 在纯 SQL中 ,它将需要大量编码,因为您将不得不手动放置 范围, 因为值和范围之间根本没有关系。如果存在关系,则可以使用 CASE 表达式并 动态 构建范围。 在 Oracle数据库11g第1版 及更高版本中,可以使用 UNPIVOT 上面,根据您的情况,您需要用现有

  • 需要帮助以下从测试中选择col1、col2、split(col3); 任何regex或PL/SQL函数的想法都可以帮助实现这一点。

  • 问题内容: 我有一个查询,该查询始终返回一行且包含 许多 列。我想将其转换为2列和多行。 原始结果: 我想要的是: 这可能吗? 编辑(澄清) 我正在寻找一种自动的方法。IE浏览器,我可以传递任何只返回1行的查询结果。 问题答案: 您正在使用Oracle 11g吗?您尝试过枢轴旋转还是取消枢轴旋转? 更多信息在这里。

  • 问题内容: 我有一张像这样的桌子: 想要将其转换为: 在oracle中不使用此联合: 问题答案: 您可以尝试使用unpivot sqlfiddle:https ://dbfiddle.uk/ ? rdbms = oracle_11.2 & fiddle = b2105e1010b332ce5b702eba7bfa7f2d

  • 是否将HQL查询转换为纯Oracle查询? 从表中选择* 谢谢Advane。

  • 问题内容: 这是我的查询 ,列为nvarchar数据类型,为INT数据类型 表格如下 预期结果 在这里,我需要将输出从行转换为列,并找到总计并将其放置在每个范围的最后一列中。 问题答案: 您应该可以使用类似于以下内容的东西: 参见带有演示的SQL Fiddle