读书人

求oracle sql 话语

发布时间: 2013-01-02 13:08:44 作者: rapoo

求oracle sql 语句
需求
M79B table
M79BLBLCOD M79BYR M79BPOSSNCOD M79BLINNUM M79BDISRTE M79BCMSRTE
XGS2013SS123
XGS2013SS245
AFA2012SS100.65
AFA2012SS20.20.6
AFA2012SS30.30.55
AFA2012SS40.50.5
AFA2011SS40.50.4
AFA2011SS10.10.45
AFA2011SS20.20.4
AFA2011SS30.30.45

根用的 Year 年份、Season 季度、Supplier 供商,取ZTM79, ZTM79A, ZTM79B

首的容M79BDISRTE(以此排序)
之後的位按Year 年份、Season 季度而定,容M79BCMSRTE,
1.基本上一始要找到所有需要的季度的discount rate,以discount rate排序在最左示
2.然後在右的位把所有需要的季度填上M79BCMSRTE
3. 如果季度有某discount rate,格空白

想要得要下面效果
2011& 2012 M79BDISRTE2011 SS M79BCMSRTE2012 SS M79BCMSRTE
00.65
0.10.45
0.20.40.6
0.30.450.55
0.50.40.5
比如SELECT M79BLBLCOD,M79BYR,M79BPOSSNCOD,M79BDISRTE,M79BCMSRTE
FROM ZTM79B
WHERE M79BLBLCOD='AFA'
AND M79BYR IN ('2011', '2012')
AND M79BPOSSNCOD IN ('SS')
[解决办法]
select NVL(T1.M79BDISRTE, T2.M79BDISRTE) AS M79BDISRTE,
T1.M79BCMSRTE,
T2.M79BCMSRTE
from (select M79BDISRTE, M79BCMSRTE
from test
where M79BYR = '2011'
AND M79BLBLCOD = 'AFA'
and M79BPOSSNCOD = 'SS') t1
full join (select M79BDISRTE, M79BCMSRTE
from test
where M79BYR = '2012'
AND M79BLBLCOD = 'AFA'
and M79BPOSSNCOD = 'SS') t2 on t1.M79BDISRTE =
t2.M79BDISRTE
ORDER BY NVL(T1.M79BDISRTE, T2.M79BDISRTE)


=======================================================
100.65
20.10.45
30.20.40.6
40.30.450.55
50.50.40.5

读书人网 >oracle

热点推荐