Oracle 根据某一个字段的数量生成多行

SELECT 
tt.le,
tt.ITM,
MAX(tt.oid),  -- 因为添加了分组,所以需要一个函数
MAX(tt.qty) qty
FROM  (
with t as (
 SELECT 
     rownum as rowIndex,
	 --这行必加,不然查询速度慢了数倍
	 v.oid,
     v.itm,
     v.qty --数量
  FROM item v,
 WHERE 1=1
)
  select LEVEL as le,rownum,t.* from t connect by level <= t.qty  
	-- 根据 t.qty 数据量生成多行数数据
	--到这一步其实已经拆分出来,但是他会生成很多重复的数据
	
) tt  GROUP BY tt.ITM,tt.le ORDER BY tt.ITM 
--根据层级和ID去掉重复的数据

因为实际需求中遇到了这问题,所以研究了一下,其中有些比较深的东西我也不是很清楚,比如为什么在查询语句中加上了 rownum 函数查询速度会变快等,希望有大佬可以解答一下。

有更好的方法可以在评论区留言,或者是对上面的语句有疑问的地方也可以留言问我。 

外连:

SQL Sever 根据某一个字段的数量生成多行-CSDN博客

(1条消息) Oracle根据某列字段拆分为多行/列转行_糖药罐子的博客-CSDN博客_oracle一列拆分为多行

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值