need help

[复制链接]
查看11 | 回复4 | 2010-3-1 11:04:59 | 显示全部楼层 |阅读模式
Hi, oracle sql experts
I have following requirement:
source:
id
months
total_amount
1
01,02,03, 0410000
2
01,02
4000
3
05, 06
5000

target:
id mon
budget_month
1
01
2500
1
02
2500
1
03
2500
1
04
2500
2
01
2000
2
02
2000
3
05
2500
3
06
2500
my database is oracle 10g
Thanks in advance
回复

使用道具 举报

千问 | 2010-3-1 11:04:59 | 显示全部楼层
WITH d AS (
SELECT 1 id,'01,02,03,04' months,10000 total_amount FROM DUAL UNION ALL
SELECT 2 id,'01,02'
,4000 FROM DUAL UNION ALL
SELECT 3 id,'05,06'
,5000 FROM DUAL
)
SELECT id,REGEXP_SUBSTR(months,'[^,]+',1,rn) m, total_amount/cnt
FROM (SELECT d.*,LENGTH(months)-LENGTH(REPLACE(months,','))+1 cnt

FROM d
)
,(SELECT ROWNUM rn FROM DUAL CONNECT BY ROWNUM<=100)
WHERE rn<=cnt
ORDER BY 1,2;
回复

使用道具 举报

千问 | 2010-3-1 11:04:59 | 显示全部楼层
又见列转行
回复

使用道具 举报

千问 | 2010-3-1 11:04:59 | 显示全部楼层
谢谢了, NEWKIDS, 你真是太强了。
回复

使用道具 举报

千问 | 2010-3-1 11:04:59 | 显示全部楼层
学习
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行