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

Oracle 11 SQL:有没有一种方法可以将1行拆分为x行

贺聪
2023-03-14
问题内容

客户要求将Oracle DB SQL中的1行拆分为6行。

假设,最初的SQL(具有多个联接的复杂sql等)进入9列:
从X,Y,Z中选择A,B,C,D,E,F,G,H,I。。。(但查询非常复杂)

1)A,B,C,D,E,F,G,H,I

现在,客户要求返回返回到上述模式的每一行,新的输出应如下所示:
1)A,B,C,’D’,D
2)A,B,C,’E’,E
3)A, B,C,’F’,F
4)A,B,C,’G’,G
5)A,B,C,’H’,H
6)A,B,C,’I’,I

基本上,第1 3列将在所有6个NEW ROWS中重复。
该过程对原始查询中的每一行重复。

这可能吗 ?如果是,怎么办?


问题答案:

您只需要unpivot子句以垂直显示数据:

with t(a,b,c,d,e,f,g,h,i) as
(
 select 1,2,3,'D','E',2,3,'X','Y' from dual 
)
select a,b,c,val from
(
select a,b,c,to_char(d) as d, to_char(e) as e, to_char(f) as f, to_char(g) as g, 
             to_char(h) as h, to_char(i) as i
  from t
)  
unpivot 
( val for col in (d,e,f,g,h,i) )
order by col

[Demo](https://dbfiddle.uk/?rdbms=oracle_11.2&fiddle=1f2fac3c421caa8259360b1271b97cec)

to_char() 转换是针对获取 ORA-01790 而实现的 表达式必须具有与相应表达式 错误 相同的数据类型



 类似资料:
  • 问题内容: 我的网页上有一个“瘦”列表:例如,一个包含100个项目的列表,每个项目的长度为一个单词。为了减少滚动,我想在页面的两列甚至四列中显示此列表。我该如何使用CSS? 我希望该解决方案具有灵活性,这样,如果列表增加到200个项目,则无需进行很多手动调整即可容纳新列表。 问题答案: ul { -moz-column-count: 4; -moz-column-gap: 20px; -webki

  • 问题内容: 我知道Internet Explorer具有自动换行样式,但是我想知道是否有跨浏览器的方法可以对div中的文本进行这种操作。 最好是CSS,但JavaScript代码片段也可以正常工作。 编辑:是的,指的是长长的弦,为人们加油! 问题答案: 阅读原始评论时,卢瑟福正在寻找一种 跨浏览器的 方式来包装 不间断的 文本(根据他对IE的自动换行设计,旨在破坏不间断的字符串)。 我现在已经使用

  • 在Python中,我有一个像下面这样的长线: 然后我试着把它改成下面的格式。然而,它不再像预期的那样工作了: 我知道Python使用缩进的语法,所以可能这种格式不会工作也许?或者如果有的话,有正确的方法在Python中格式化它吗?

  • 问题内容: 我有一个.csv文件,如下所示: 我必须从文件中删除重复的电子邮件(整行)(即,上面示例中包含的行之一)。如何仅在字段1(用逗号分隔)上使用?根据,没有列选项。 我尝试了一些东西,但是没有用。 问题答案: 为了独特 所以逗号是定界符 对于关键字段1 测试结果:

  • 问题内容: 让我们说我有这样的查询: 通过在各处手动更改字符串,我使用不同的表多次运行此查询。我尝试声明以下内容: 但这似乎不起作用,因为它引发了一个错误,提示我必须先声明为表变量,然后才能使用它。我如何对表名进行模板化,如果可以的话,Intellisense仍然可以使用吗? 问题答案: 您可以将其包装在EXEC语句中,如下所示: 但是不,在这种情况下,智能感知将无法正常工作。 如果您事先知道输出

  • 问题内容: 如果输入大小太小,则库会自动序列化 流中地图的执行,但是这种自动化不会并且也不会考虑地图操作的繁重程度。有没有办法 强制parallelStream()实际并行化CPU重映射? 问题答案: 似乎存在根本的误解。链接的“问答”讨论了由于OP没有 看到预期的加速,流显然不能并行工作。结论是,有没有好处在 并行处理工作负载是否太小,不,有一个自动回退到顺序执行。 实际上是相反的。如果您请求并